亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個跟蹤插入順序的std :: map?

一個跟蹤插入順序的std :: map?

C++
侃侃無極 2019-09-02 09:13:00
我目前有一個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;


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 1135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號