假设我有一个unordered_set<int> S.
我知道我可以通过以下方式迭代:
void iterate(){
for (const auto& elem: S) {
cout<<elem<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果我打电话iterate()并打印出一定数量的数字,是否可以保证如果我iterate()按照我想要的次数打电话,它会一直打印相同的序列?
是的,只要S不修改.[container.requirements.general] P6:
begin()返回一个迭代器,引用容器中的第一个元素.
使用定冠词"the"意味着只有一个这样的"第一元素".因此,begin()对同一(未更改的)容器的多次调用必须返回引用同一元素的迭代器.
此外,所有容器迭代器都必须至少是前向迭代器(参见同一子条款中的表64).
剩下的就是[forward.iterators]中的前向迭代器要求,特别是:
由于从相等的迭代器开始,迭代的每一步都必须生成相等的迭代器,它必须引用容器中的相同元素.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |