关于循环和迭代器的c++11范围
About c++11 range for loops and iterators
循环的c++11
范围是什么导致的:
std::list<Point> item;
....
//fill the list somewhere else
....
for(Point p : item) {
p.lowerY();
}
只工作一次(即lowerY()
只做一次它应该做的事情,但下次到达这个循环时,它什么都不做),但这是:
list<Point>::iterator it;
for (it = item.begin();it != item.end();++it) {
it->lowerY();
}
每次都能完美工作。有什么区别?
在以前的代码中,行
for(Point p : item) {
每次访问下一个项目时都会创建该点的副本。为了确保方法lowerY()的调用有效,您需要将其重新定义为
for(Point & p : item) {
相关文章:
- 从迭代器转换为变量的类型.(C++11 模板)
- C++11 std::列出拼接后的迭代器失效
- C++11 迭代器和返回的 std::unique_ptr 的范围
- 矢量迭代器在尝试对图形进行深度优先搜索时导致分割错误 11
- C++11 迭代器接口
- 访问迭代器值会导致segfault 11
- C 11 forward_list迭代器仍指向删除值
- 如何将基于迭代器的 for 循环重写为基于范围的循环 (C++11)
- VC++11映射和多映射迭代器(重载)C2535
- 如何最好地在C++11中为unique_ptr中的普通数组制作迭代器
- DEV-C++5.11 STL迭代器的调试问题
- C++11 中的过去终结迭代器失效
- 在 C++11 中通过 const 迭代器进行破坏
- 为什么在 C++11 或 C++14 中没有放置迭代器
- 关于循环和迭代器的c++11范围
- 带有std::begin()、std::end()问题的C++11自动迭代器类型
- 如何在C++11中编写一个简单的、类型擦除的可组合迭代器
- 在c++ 11基于范围的for循环中,通过迭代器删除字符串中的空白
- c++ 11:在不知道其容器的情况下存储迭代器
- C++11 无序 map<int, Mytype* 的有序迭代器>