pmc*_*mcs 1 c++ iterator stl list
我刚刚注意到std::list
C++中有关该类的一些内容我很好奇.简而言之,它涉及列表迭代器的工作方式.请考虑以下代码:
std::list<int> alist;
alist.push_back(0);
alist.push_back(1);
alist.push_back(2);
Run Code Online (Sandbox Code Playgroud)
显然,这会创建一个包含三个整数元素的列表.我可以定义一个到列表开头的迭代器,并使用它来打印出第一个元素中包含的值,如下所示:
std::list<int>::iterator iter = alist.begin();
std::cout << *iter << std::endl; // Prints "0" to stdout
Run Code Online (Sandbox Code Playgroud)
我觉得有点奇怪的是,如果我现在递减迭代器,它会"循环"并最终指向列表中的最后一个元素:
--iter;
std::cout << *iter << std::endl; // Prints "2" to stdout
Run Code Online (Sandbox Code Playgroud)
这种合理的行为是否被认为是一种双重链接列表?如果列表是循环链接列表,我非常期望迭代器中的类似行为,但我发现这很奇怪.
您过去使用过的迭代器行为是否有任何实际用途?是否有任何与此行为相关的陷阱我应该留意?
(顺便说一句,这发生在gcc 4.7.0(MinGW).我没有用任何其他版本或编译器测试它.)
归档时间: |
|
查看次数: |
2443 次 |
最近记录: |