我正在尝试获取地图中键的索引。我用距离 为了这。为什么结果总是关闭?我在期待“啤酒” index为2但答案是1。
#include <map>
#include <iostream>
int main(){
std::map<std::string, int> my_map;
my_map.insert(std::make_pair("apple", 0));
my_map.insert(std::make_pair("a", 0));
my_map.insert(std::make_pair("ale", 0));
my_map.insert(std::make_pair("aple", 0));
my_map.insert(std::make_pair("aplle", 0));
std::cout << "map size = " << my_map.size() << std::endl;
int index = distance(my_map.begin(), my_map.find("ale"));
std::cout << "index = " << index << std::endl;
index = distance(my_map.begin(), my_map.find("a"));
std::cout << "index = " << index << std::endl;
}
答案 0 :(得分:3)
按照map
在地图中存储的顺序打印。然后,std::distance
的返回值将有意义。
for ( auto& item : my_map )
{
std::cout << item.first << " ";
}
std::cout << std::endl;
输出:
a ale aple aplle apple
答案 1 :(得分:1)
std::map
(关联容器)不会像std::vector
(序列容器)那样维护&#39; insert order`中的元素。它以任何排序顺序维护它们,使地图查找更有效。