如何使用迭代器在向量中导航?(C++)

2021-12-21 00:00:00 iterator vector c++

目标是访问字符串向量的第 n 个"元素,而不是使用 [] 运算符或at"方法.据我了解,迭代器可用于在容器中导航,但我以前从未使用过迭代器,而且我正在阅读的内容令人困惑.

The goal is to access the "nth" element of a vector of strings instead of the [] operator or the "at" method. From what I understand, iterators can be used to navigate through containers, but I've never used iterators before, and what I'm reading is confusing.

如果有人能给我一些有关如何实现这一目标的信息,我将不胜感激.谢谢.

If anyone could give me some information on how to achieve this, I would appreciate it. Thank you.

推荐答案

你需要使用 begin 和 <vectorend方法> 类,它返回分别引用第一个和最后一个元素的迭代器.

You need to make use of the begin and end method of the vector class, which return the iterator referring to the first and the last element respectively.

using namespace std;  

vector<string> myvector;  // a vector of stings.


// push some strings in the vector.
myvector.push_back("a");
myvector.push_back("b");
myvector.push_back("c");
myvector.push_back("d");


vector<string>::iterator it;  // declare an iterator to a vector of strings
int n = 3;  // nth element to be found.
int i = 0;  // counter.

// now start at from the beginning
// and keep iterating over the element till you find
// nth element...or reach the end of vector.
for(it = myvector.begin(); it != myvector.end(); it++,i++ )    {
    // found nth element..print and break.
    if(i == n) {
        cout<< *it << endl;  // prints d.
        break;
    }
}

// other easier ways of doing the same.
// using operator[]
cout<<myvector[n]<<endl;  // prints d.

// using the at method
cout << myvector.at(n) << endl;  // prints d.

相关文章