通过索引访问地图值?

cpp*_*oob 6 c++ map

我有这张地图:

m.insert(pair<int, string>(10, "map1"));
m.insert(pair<int, string>(11, "map2"));
m.insert(pair<int, string>(12, "map3"));
m.insert(pair<int, string>(13, "map4"));
m.insert(pair<int, string>(14, "map5"));
Run Code Online (Sandbox Code Playgroud)

然后,我让用户输入一个数字:

Please select:
1. Map1
2. Map2
3. Map3
4. Map4
5. Map5
Run Code Online (Sandbox Code Playgroud)

比方说,如果用户输入3,我该如何得到这个值:12 ??

Jam*_*lis 4

std::map不跟踪其元素插入的顺序;元素按排序顺序而不是插入顺序存储。如果您需要跟踪元素的插入顺序,您需要自己执行此操作。一种方法是保留第二个容器来按顺序存储密钥,std::vector例如使用 a :

std::vector<int> insertion_order;

m.insert(std::make_pair(10, "map1"));
insertion_order.push_back(10);
Run Code Online (Sandbox Code Playgroud)

然后,第一个插入元素的键N位于序列N - 1中的索引处insertion_order

  • 我最初的建议不太理想(至少可以这么说)。考虑一下这个新建议。 (2认同)