【发布时间】:2019-04-17 04:11:17
【问题描述】:
std::unordered_set::equal_range 返回一对迭代器,描述集合中值的范围,其中值的键比较相等。给定:
auto iteratorFromEqualRange = someUnorderedSet.equal_range(key).first;
auto iteratoFromFind = someUnorderedSet.find(key);
该标准是否保证:
++iteratorFromEqualRange == ++iteratorFromFind;
因为它们都是根据std::unordered_set::iterator 定义的?换句话说,std::unordered_set 的不同实现是否可以保留关于我们正在迭代的 context 的“隐藏”信息,或者这是对存储桶接口的不太微妙的强制执行(其中限制我们的实施选项)?
我希望这确实是一个保证,鉴于 LegacyForwardIterator 的要求,我只是要求确认(或者更好的消息,包括某种逃生舱口)
【问题讨论】:
标签: c++ c++11 iterator c++14 language-lawyer