| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1622 人关注过本帖
标题:能否给个map的例子
只看楼主 加入收藏
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
 问题点数:0 回复次数:11 
能否给个map的例子
如题:能否给个map<string,vector<int> >初始化和输出的程序段,谢谢
搜索更多相关主题的帖子: map 例子 vector int string 
2006-05-28 18:34
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

没人写过这样的代码吗?


2006-05-28 20:40
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

有写过也不会带身边啊,我简略地写了一个例子:

[CODE]#pragma warning(disable : 4786)
#include<map>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
typedef vector<int>* PVECTOR_INT;
typedef pair<string, PVECTOR_INT> S_V_PAIR;
void main()
{
vector<int> vtemp1;
vector<int> vtemp2;
map<string,PVECTOR_INT> m;
map<string,PVECTOR_INT>::iterator iter = NULL;
vector<int>::size_type size;
vtemp1.push_back(0);
vtemp1.push_back(1);
vtemp2.push_back(0);
vtemp2.push_back(1);
vtemp2.push_back(2);
m.insert(S_V_PAIR("test1", &vtemp1));
m.insert(S_V_PAIR("test2", &vtemp2));
for (iter = m.begin(); iter != m.end(); iter ++)
{
size = (PVECTOR_INT(iter->second))->size();
cout<<"element "<<iter->first<<" size:"<<size<<endl;
}
m.clear();
vtemp1.clear();
vtemp2.clear();
}[/CODE]


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-29 09:49
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
对了,忘了说,你写的map直接用了vector&lt;int&gt;,我觉得这样不好,每次都要复制整个vector,所以改成了vector指针,这样速度会快很多,不过这样要维护的东西会多一点

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-29 09:52
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

恭喜版主,呵呵,高手一出手,就知有没有
我还没学到数据结构的映射容器这,还在学队列,慢慢来吧,好想和你一样强


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-29 10:43
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 


谢了


2006-05-29 10:57
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 

用指针而不直接用vector本身的问题就是vector的寿命不好控制,例如这段程序不是在main()中写的,而是在随便的函数中写的,要返回map<string,PVECTOR_INT>的指针,这时vector类是局部变量还是new出来的就很关键了。


http://myajax95./
2006-05-29 15:11
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 

用指针而不直接用vector本身的问题就是vector的寿命不好控制,例如这段程序不是在main()中写的,而是在随便的函数中写的,要返回map<string,PVECTOR_INT>的指针,这时vector类是局部变量还是new出来的就很关键了。


http://myajax95./
2006-05-29 15:11
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用myajax95在2006-5-29 15:11:00的发言:

用指针而不直接用vector本身的问题就是vector的寿命不好控制,例如这段程序不是在main()中写的,而是在随便的函数中写的,要返回map<string,PVECTOR_INT>的指针,这时vector类是局部变量还是new出来的就很关键了。

所以说要维护的东西多了点,vector都用new出来的,一般情况下会写一个模板函数来释放容器中的指针,如下:

template<class T, class P>
void ReleaseMap(map<T, P> *m)
{
map<T, P>::iterator iter = NULL;
P p;
for (iter = m->begin(); iter != m->end(); iter ++)
{
p = iter->second;
if (p)
{
delete p;
}
}
m->clear();
}

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-29 15:51
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
俩大势力派斑竹
我呢...
朋友帮忙派的...
哎,努力拉
估计大二该开这些了.

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-29 17:17
快速回复:能否给个map的例子
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012335 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved