无法理解“list <int> :: iterator i;”

时间:2015-07-23 11:18:59

标签: c++ list iterator

我一直在研究如何使用C ++编写列表。尽管第12行不起作用,我对标题中提到的那条线更感兴趣,因为我不明白它的作用是什么?

因此for循环中存在错误,但我认为这是由于我对list<int>::iterator i;缺乏了解,如果有人可以分解并解释这条线对我来说意味着什么太棒了,谢谢!

#include <iostream>
#include <list>

using namespace std;

int main(){

    list<int> integer_list;

    integer_list.push_back(0); //Adds a new element to the end of the list.
    integer_list.push_front(0); //Adds a new elements to the front of the list.
    integer_list (++integer_list.begin(),2); // Insert '2' before the position of first argument.

    integer_list.push_back(5);
    integer_list.push_back(6);

    list <int>::iterator i;

    for (i = integer_list; i != integer_list.end(); ++i)
    {
        cout << *i << " ";
    }


    return 0;

}

此代码直接来自:http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html#LIST 除了列表名称已被更改。

1 个答案:

答案 0 :(得分:1)

list<int>::iterator类型是模板化类list<int>的迭代器类型。迭代器允许您一次查看列表中的每个元素。修复代码并尝试解释,这是正确的语法:

for (i = integer_list.begin(); i != integer_list.end(); ++i)
{
    // 'i' will equal each element in the list in turn
}

方法list<int>.begin()list<int>.end()各自返回list<int>::iterator的实例,分别指向列表的开头和结尾。 for循环中的第一个术语使用复制构造函数初始化list<int>::iterator以指向列表的开头。第二个术语检查您的迭代器是否指向与设置为指向末尾的位置相同的位置(换句话说,您是否已到达列表的末尾),第三个术语是运算符重载的示例。类list<int>::iterator重载了++运算符,其行为类似于指针:指向列表中的下一项。

您还可以使用一些语法糖并使用:

for (auto& i : integer_list)
{

}

得到相同的结果。希望这能为你清除迭代器。