C++ 到达C+中std::list的第n个元素+;
我需要以某种方式到达列表的第n个元素。我尝试了下面的代码,但没有成功。有没有办法获取列表第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
#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 );