Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 到达C+中std::list的第n个元素+;_C++_List - Fatal编程技术网

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

C++ 到达C+中std::list的第n个元素+;,c++,list,C++,List,我需要以某种方式到达列表的第n个元素。我尝试了下面的代码,但没有成功。有没有办法获取列表第n个元素的内容?我不能使用向量或队列,我只能使用列表。以下是我的尝试: #include <list> #include <iostream> #include <iterator> using namespace std; int main() { int x = 5; list <int> mylist; list<in

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


    }
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int x=5;
列出我的清单;
列表::迭代器;

对于(inti=0;i这里,
它属于
迭代器
类型(迭代器到给定列表元素),您需要进一步取消引用以获取其值

改变

if (it == x)

该功能可用于以下用途:

it = mylist.begin();
std::advance(it, x);
要获取第n个元素,可以使用
std::advance

std::list<int>::iterator it = myList.begin();
std::advance( it, n );
std::list::iterator it=myList.begin();
std::advance(it,n);
只要确保有足够的元素。如果你有C++11, 您可以使用:

std::list<int>::iterator it = std::next( myList.begin(), n );
std::list::iterator it=std::next(myList.begin(),n);

直接。

最好解释一下原因,而不仅仅是转储代码。请再说一遍。@LightnessRacesinOrbit补充道。
std::list<int>::iterator it = std::next( myList.begin(), n );