我有这张地图:
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 ??
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。