1
struct user
{
    vector<size_t> follower;
    vector<size_t> following;
};

int main ()
{
    vector< user > node ( 100 );

    // Pushing back some indices of other nodes in some node[x].follower and node[x].following

    size_t i = 2;

    for ( size_t const& j : node[i].follower )
        node[j].following.erase( remove( node[j].following.begin(), node[j].following.end(), i ), node[j].following.end() );

}

C++ で を作成し、 に属する他のユーザーへのstruct userベクトルfollowerとストア インデックスを作成しました。最後のループで、他のユーザーのおよびからすべてのインデックス(特定の を参照する)を破棄したいと思います。残念ながら、C++11 を使用すると、次のエラーが発生します。followingvector nodeforiuser ivector followerfollowinggcc/4.7.2

error: cannot convert 'std::vector<long unsigned int>::iterator {aka __gnu_cxx::__normal_iterator<long unsigned int*, std::vector<long unsigned int> >}' to 'const char*' for argument '1' to 'int remove(const char*)'

ループのコードで使用してfor、イテレータのループでも試しましたが、それでも同様のエラーが発生します。for ( vector<size_t>::iterator it = node[i].follower.begin(); it != node[i].follower.end(); ++it )*it

どうすればいいのかわからない。

4

1 に答える 1

8
#include <algorithm>

それ以外の場合、コンパイラはremoveファイルを削除するための他の関数を使用しようとし、C スタイルの文字列を受け入れます (を含めることにより<iostream>)。

于 2013-10-20T08:33:35.253 に答える