将迭代器传递给函数

Passing iterators to a function

本文关键字:函数 迭代器      更新时间:2023-10-16

我想传递一个指针向量的迭代器给函数。我不知道如何通过。

这是正确的做法吗?

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);
    }  
}

你可以在这里看到它的作用