我目前有一個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 關注
- 1135 瀏覽
添加回答
舉報
0/150
提交
取消