fst*_*tab 0 c++ iterator multimap c++-standard-library c++11
我是 C++ 的新手。我想知道:std::multimap(C++11)集合的迭代器中是否有一些插入时间保留?
我认为,因为它是由任意值索引的,所以不能保证迭代器中元素的排序保留插入时间,但我正在处理一些做出不同假设的代码,即返回的元素begin()是相关的到广告订单。
标准容器本身不记录/存储插入时间,而是仅在具有“等效”键的任何元素组中,并且自 C++11 起,插入顺序由它们在所使用的树数据结构中的存储位置暗示,并转发迭代将按照它们被插入的顺序遍历它们。我说“等效”是因为在 set/map/multiset/multimap 中,键不与==;进行比较。相反,如果它们都不小于另一个,则它们被认为是“等效的”,因此您只需要定义operator<键类型(<如果您不指定自己的键类型,它将使用键类型的默认运算符)。
如果您想在容器中的所有元素上进行插入排序的迭代,那么您必须使用某种递增系列的方式作为键 - 这可能是时间戳或例如递增整数(或者 - 技术上正确但愚蠢的替代方案 - 整个表都有具有相同键的元素,但如果您期望您可能应该使用 avector<>或list<>)。
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |