使用STD ::列表作为循环列表安全吗?
Is it safe to use std::list as a circular list?
因此,在标准中定义了端()迭代器的递增或减少端()迭代器?在Linux上,begin()被实现为end() 。
#include <list>
#include <iostream>
int main()
{
std::list<int> numbers;
for (int i = 0; i < 10; i++)
numbers.push_back(i);
auto it = numbers.begin();
int count = 3;
while (count)
{
std::cout << *it++;
if (it == numbers.end())
{
++it; // is this ok ???
--count;
std::cout << 'n';
}
}
}
因此,每个平台上的输出始终相同?
输出:
0123456789
0123456789
0123456789
从任何标准C 库容器中的end()
返回的迭代器会导致不确定的行为。由于std::list<T>
的大多数实现的实现详细信息,因此可以增加list.end()
,但不能保证它可以。
no,这是不行的。std::list
迭代器是一个双向学位符,它是前向材料的改进。前向材料状态的++i
和i++
的先决条件:
i
是可重访
不适合end()
,因为它是列表的最后一项。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 条件_variable和unique_lock如何适用于线程安全列表
- 这是对支撑初始器列表的不安全使用情况
- 这个无锁数据列表插入是安全的吗
- 移动初始化列表的元素是安全的吗?
- 使用之前在初始值设定项列表中初始化的成员初始化成员是否安全
- 使用STD ::列表作为循环列表安全吗?
- 初始值设定项列表引用类型安全
- 删除链接列表是否安全
- 存储STL列表迭代器的指针安全吗?
- 我可以锁定列表中的一个元素以使其线程安全,而不是锁定整个列表吗?
- 存储对列表元素的引用是否安全?