我需要以某种方式到达列表的第n个元素。我尝试了下面的代码,但它没有用。有没有办法获取列表第n个元素的内容?我无法使用向量或队列,我只能使用列表。这是我的尝试:
#include <list>
#include <iostream>
#include <iterator>
using namespace std;
int main()
{
int x = 5;
list <int> mylist;
list<int>::iterator it;
for (int i=0; i<10; i++)
mylist.push_back (i);
it = mylist.begin();
for(int i = 0 ; i < 10; i++)
{
if(it == x)
{
cout<<"x found"<<endl;
break;
}
advance(it,1);
}
}
答案 0 :(得分:3)
这里,it
属于iterator
类型(给定列表元素的迭代器),您需要进一步取消引用以获取其值。
更改
if (it == x)
到
if (*it == x)
^^^
答案 1 :(得分:2)
函数std::advance()
可用于此目的:
it = mylist.begin();
std::advance(it, x);
答案 2 :(得分:2)
要获得n th 元素,您可以使用std::advance
:
std::list<int>::iterator it = myList.begin();
std::advance( it, n );
确保有足够的元素。如果你有C ++ 11, 你可以使用:
std::list<int>::iterator it = std::next( myList.begin(), n );
直接。