首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使unordered_map工作

无法使unordered_map工作
EN

Stack Overflow用户
提问于 2016-04-15 09:08:03
回答 1查看 876关注 0票数 0

我编写了相当简单的代码来检查unordered_pair

代码语言:javascript
复制
// 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;
}

我得到以下错误

代码语言:javascript
复制
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命令是:

代码语言:javascript
复制
g++ -Wall -c "%f"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

初始化地图的旧方法:

代码语言:javascript
复制
std::map<int, int> m;
m[1] = 3;
m[2] = 2;
m[3] = 1;

助推有一个用于列表初始化的类似语法的简洁模板:

代码语言:javascript
复制
map<int,int> next = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36642867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档