【发布时间】:2013-01-15 20:32:59
【问题描述】:
如果我有以下代码
std::unordered_multimap<std::string, std::vector<double>> myMap;
std::vector<double> v1, v2, v3;
// init v1, v2, v3....
myMap.insert(std::make_pair<std::string, std::vector<double>("vec", v1));
myMap.insert(std::make_pair<std::string, std::vector<double>("vec", v2));
myMap.insert(std::make_pair<std::string, std::vector<double>("vec", v3));
如果我使用迭代器访问值,它们将始终按以下顺序排列:v1, v2, v3
所以基本上如果我插入相同键但值不同的元素,它们是否总是保留插入顺序?
【问题讨论】:
-
使用无序容器的最好方法是完全不考虑顺序。完全不依赖订单。如果您出于某种原因查看元素的顺序,您可能使用了错误的容器。无法保证它会保留广告订单。
-
@Troy 我可以改用 std::multimap 吗?
-
如果您需要关联容器中的插入顺序,您可能需要类似 boost 的 multi_index 之类的东西。 SO上有关于此的其他问题。