将迭代器传递给函数
Passing iterators to a function
我想传递一个指针向量的迭代器给函数。我不知道如何通过。
这是正确的做法吗?
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;
}
一行:
string value = DoSomething(it)
应:string value = DoSomething(*it);
我想传递一个指针向量的迭代器给函数。
string value = DoSomething(it);
您试图正确传递它,但该函数没有编写为使用迭代器:
string DoSomething(MyObject* a)
这个函数需要一个指针…你可以这样赋值:
string value = DoSomething(*it);
或者你可以改变你的DoSomething函数:
string DoSomething(vector<MyObject*>::iterator i)
{
if ((*i)->isvalid())
...
}
如果你真的想把迭代器传递给函数,它的形参也应该是一个迭代器:
#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);
}
}
你可以在这里看到它的作用
相关文章:
- 如何在C++中将迭代器作为函数参数传递
- 如何在 c++ 中将字符串迭代器变量传递给函数?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- 如何创建迭代器函数
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?
- 迭代器库中的 std::size() 不适用于传递给函数的 C 样式数组
- 使用迭代器的模板类的构造函数
- C++:复制迭代器的构造函数
- 基于函数而不是集合的二分搜索或迭代器?
- 成员函数中的迭代器出现问题
- 使用迭代器的自定义比较器函数
- 专门C++使用指针值类型的通用迭代器的模板函数?
- 从 std::vector 迭代器中执行函数指针
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 如何基于循环迭代器选择函数
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- 成员函数不能为集合迭代器和const_iterator的输入重载(但可以为其他 STL 迭代器重载)
- 具有C++迭代器参数的多功能函数
- C++如何获取传递给函数(STL 迭代器)的参数的名称
- C++ 解释重载成员函数迭代器(int i = 0) 的构造"one liner":i(i) { };