我编写了相当简单的代码来检查unordered_pair
// unordered_map example
#include <iostream>
#include <unordered_map>
int main (){
std::unordered_map<double, double> mymap = {
{5,2.3},
{7,34},
{4,12}
};
std::cout<<":::: unordered_map ::::"<<std::endl;
std::cout<<"5 ->"<<mymap[5]<<std::endl;
std::cout<<"7 ->"<<mymap[7]<<std::endl;
std::cout<<"4 ->"<<mymap[4]<<std::endl;
std::cout<<"Done ! ";
return 0;
}我得到以下错误
unordered_map.cpp:5:37: error: non-aggregate type 'std::unordered_map<double, double>' cannot be initialized with an initializer list
std::unordered_map<double, double> mymap = {
^ ~
1 error generated.
Compilation failed 我正在开发OSX并使用geany。
Geany中的Build命令是:
g++ -Wall -c "%f"发布于 2016-04-15 09:28:07
unordered_map被引入到C++11标准中。如果g++版本支持它,则可以使用选项-std=c++11启用c++11标准。
是否有一种在旧标准中使用关联容器的方法?
std::map是一个关联容器。它存在于所有c++标准中。
我试着使用unordered_map,因为它比地图快
在某些情况下,unordered_map更快。在其他情况下,map更快。在你测量完之前,不要一成不变。
但是,在不使用-std=c++11的情况下使用map仍然给出了与上面相同的错误
这是因为您使用的是列表初始化,它也需要c++11。
初始化地图的旧方法:
std::map<int, int> m;
m[1] = 3;
m[2] = 2;
m[3] = 1;助推有一个用于列表初始化的类似语法的简洁模板:
map<int,int> next = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);https://stackoverflow.com/questions/36642867
复制相似问题