免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5547 | 回复: 2
打印 上一主题 下一主题

c++ map 中使用结构体 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-11 12:17 |只看该作者 |倒序浏览
我想在map里存放结构体作为value

怎么实现value的存取呢?求大神帮忙

我的代码:
typedef struct alertInfo{
    double alertUp;
    double alertDown;
    alertInfo(double up,double down)
    {
        alertUp = up;
        alertDown = down;
    };
}alert;
map<int,alert> alert_map;

for(int ii = 0; ii < 10; ii++){
    alert_map.insert(pair<int,alert>(ii,alert(240,200)));
}

求大神指教啊

论坛徽章:
0
2 [报告]
发表于 2012-12-11 23:23 |只看该作者

#include<iostream>
#include<map>
#include<utility>
using std::map;
using std::pair;

typedef struct alertInfo{
    double alertUp;
    double alertDown;
    alertInfo(double up,double down){
        alertUp = up;
        alertDown = down;
    };
}alert;

alert st(240,200);                 //实例化一个结构体对象
map<int,alert> alert_map;   //本意:key为int类型,alert是结构体类型 从int到结构体的映射,即想实现在map中存储结构体数据......
                       
int main()
{
        alert_map.insert(pair<int,alert>(1,st));
        std::cout << "alert.alertUp is equal to :" << st.alertDown << std::endl;
        std::cout << "alert.alertDown is equal to :" << st.alertUp << std::endl;

        return 0;
}

这个程序就是简单的说明一下使用map来使用结构体的,只是把你的程序稍微修改了一点。如果想要多个key对应多个结构体,那么可以创建结构体数组来实现,或者是利用vector实现。

LZ的问题就是没有创建过任何结构体变量,map中的alert是结构体指针类型,而后面居然用到alert(240,200)貌似想对结构体实例化,这显然是不对的。最主要的问题是,楼主没有创建任何共0-9各个key值对应的结构体变量。那么又有什么与key值对应呢?

浅薄想法,希望多指正。

论坛徽章:
0
3 [报告]
发表于 2013-01-15 13:32 |只看该作者
linuxkiller7967 发表于 2012-12-11 23:23
#include
#include
#include
  1. alert(240,200)
复制代码
是个无名的临时对象,已创建了对象。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP