C ++ - 向量迭代出错

时间:2013-10-20 08:27:45

标签: c++ c++11 vector iteration

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,其中向量followerfollowing将索引存储到属于vector node的其他用户。使用上一个for循环,我想要从其他用户的iuser i销毁所有索引vector follower(指代特定的following) ;不幸的是,使用{+ 1}},使用C ++ 11,我得到了这个错误:

gcc/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 ),但我仍然遇到类似的错误。

我不知道该怎么做。

1 个答案:

答案 0 :(得分:8)

#include <algorithm>

否则,编译器会尝试使用其他remove函数来删除文件并接受C风格的字符串(通过包含<iostream>)。