在C ++中到达std :: list的第n个元素

时间:2014-05-09 16:17:26

标签: c++ list

我需要以某种方式到达列表的第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);


    }
}

3 个答案:

答案 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 );

直接。