我想将函数指针向量的迭代器传递给函数。我不知道如何通过它。
这是正确的做法:
main() {
vector<MyObject*>::iterator it;
for (it = added.begin(); it < added.end(); it++) {
string value = DoSomething(it)
}
}
string DoSomething(MyObject* a)
{
if (a->isValid())
Str = "0";
..
..
return str;
}
答案 0 :(得分:3)
该行:
string value = DoSomething(it)
应该是:
string value = DoSomething(*it);
答案 1 :(得分:2)
我想将一个指针向量的迭代器传递给函数。
string value = DoSomething(it);
您正在尝试正确传递它,但该函数未编写为使用迭代器:
string DoSomething(MyObject* a)
这个函数需要一个指针......你可以给它:
string value = DoSomething(*it);
或者你可以改变你的DoSomething功能:
string DoSomething(vector<MyObject*>::iterator i)
{
if ((*i)->isvalid())
...
}
答案 2 :(得分:1)
如果你真的想将迭代器传递给函数,它的参数也应该是一个迭代器:
#include <string>
#include <iostream>
#include <vector>
using namespace std;
string DoSomething(vector<string*>::iterator a) {
string* entry = *a;
cout << *entry << endl;
return "blah";
}
int main() {
vector<string*> added;
string v1 = "v1";
string v2 = "v2";
added.push_back(&v1);
added.push_back(&v2);
vector<string*>::iterator it;
for (it = added.begin(); it < added.end(); it++) {
string value = DoSomething(it);
}
}
您可以在行动here中看到它。