这是我的迭代器位置代码
struct node {
int nodeid;
vector<fingerTable> fTable;
vector<string> data;
};
vector<node> cNode;
vector<node>::iterator position = find(cNode.begin(),cNode.end(), id);
我有大约 100 个对象,我试图找到例如 nodeid“80”的索引/元素/位置,假设我的对象全部按 nodeid 升序排序。
我担心的是速度和内存使用,我以前使用
for(int i=0;i<cNode.size();i++)
{
//if logic-- match nodeid with the nodeid input.. then assign the i to an integer..
}
但现在我正在尝试使用和迭代器,我听说它更快.. 任何关于修复它的建议,或者有更好的方法通过它的值“nodeid”找到我的向量索引
我知道 map 对我的情况来说是一个很好的 std 容器,但是我有点没时间做更改了,所以我必须坚持使用 vector ..
vector<node>::iterator position = find(cNode.begin(),cNode.end(), id);
当我尝试编译上面的迭代器行时出现错误输出。
In member function ‘void chord::removePeer(int)’:
testfile.cpp:532:69: error: no matching function for call to ‘chord::find(std::vector<chord::node>::iterator, std::vector<chord::node>::iterator, int&)’
testfile.cpp:532:69: note: candidate is:
testfile.cpp:177:5: note: int chord::find(int, int, bool)
testfile.cpp:177:5: note: no known conversion for argument 1 from ‘std::vector<chord::node>::iterator {aka __gnu_cxx::__normal_iterator<chord::node*, std::vector<chord::node> >}’ to ‘int’