我目前有一个std::map<std::string,int>存储整数值到唯一字符串标识符,我确实查找字符串。它主要是我想要的,除了它不跟踪插入顺序。因此,当我迭代地图以打印出值时,它们将根据字符串进行排序; 但是我希望它们按照(第一次)插入的顺序排序。我想过使用一个vector<pair<string,int>>替代,但我需要查找字符串并将整数值增加大约10,000,000次,所以我不知道是否std::vector会明显变慢。有没有办法使用std::map或是否有std更适合我需要的容器?[我在GCC 3.4上,我的价值可能不超过50对std::map]。谢谢。
3 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
如果你在std :: map中只有50个值,你可以在打印之前将它们复制到std :: vector,并使用适当的函子通过std :: sort进行排序。
或者你可以使用boost :: multi_index。它允许使用多个索引。在您的情况下,它可能如下所示:
struct value_t {
string s;
int i;
};
struct string_tag {};
typedef multi_index_container<
value_t,
indexed_by<
random_access<>, // this index represents insertion order
hashed_unique< tag<string_tag>, member<value_t, string, &value_t::s> >
>
> values_t;
- 3 回答
- 0 关注
- 1099 浏览
添加回答
举报
0/150
提交
取消