使用迭代器遍历列表?

28

我需要使用C++遍历一个列表的示例。


Google 搜索的简单解决方案:http://www.java2s.com/Code/Cpp/List/TraverseaListUsinganIterator.htm - Saurabh Gokhale
25
“现在你只是懒惰了。” 就我们所知,发帖人可能是另一种编程语言的专家。如果你不想帮他,就算了。我三年后谷歌搜索并发现这个答案非常有用。 - Travis Banger
4个回答

32
您的问题对应的示例如下:
  #include <iostream>
  #include <list>
  using namespace std;

  typedef list<int> IntegerList;
  int main()
  {
      IntegerList    intList;
      for (int i = 1; i <= 10; ++i)
         intList.push_back(i * 2);
      for (IntegerList::const_iterator ci = intList.begin(); ci != intList.end(); ++ci)
         cout << *ci << " ";
      return 0;
  }

简单解决方案:http://www.java2s.com/Code/Cpp/List/TraverseaListUsinganIterator.htm - Saurabh Gokhale

20

为了反映C ++中的新添加,并通过@karthik提供略有过时的解决方案,从C++11开始可以使用更短的方式,使用auto说明符:

#include <iostream>
#include <list>
using namespace std;

typedef list<int> IntegerList;

int main()
{
  IntegerList intList;
  for (int i=1; i<=10; ++i)
   intList.push_back(i * 2);
  for (auto ci = intList.begin(); ci != intList.end(); ++ci)
   cout << *ci << " ";
}

或者更加简单,使用基于范围的for循环

#include <iostream>
#include <list>
using namespace std;

typedef list<int> IntegerList;

int main()
{
    IntegerList intList;
    for (int i=1; i<=10; ++i)
        intList.push_back(i * 2);
    for (int i : intList)
        cout << i << " ";
}

7
如果你指的是STL的std::list,那么这里有一个简单的例子,来自于http://www.cplusplus.com/reference/stl/list/begin/
// list::begin
#include <iostream>
#include <list>

int main ()
{
  int myints[] = {75,23,65,42,13};
  std::list<int> mylist (myints,myints+5);

  std::cout << "mylist contains:";
  for (std::list<int>::iterator it=mylist.begin(); it != mylist.end(); ++it)
    std::cout << ' ' << *it;

  std::cout << '\n';

  return 0;
}

1
如果您不需要修改列表,建议使用const_iterator而不是iterator - Mike Seymour
迭代器是否会从列表中删除元素并减小其大小? - Tariq

0

现在你可以直接使用this


#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> intList;
    for (int i = 1; i <= 10; ++i)
        intList.push_back(i * 2);
    for (auto i:intList)
        cout << i << " ";
    return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接