VC中怎么用map

只是想测试一下map,用vs2008建立了一个控制台应用程序,包含了map头文件,但是还是不能用map。看如下代码:#include"stdafx.h"#include"... 只是想测试一下map,用vs2008建立了一个控制台应用程序,包含了map头文件,但是还是不能用map。
看如下代码:

#include "stdafx.h"
#include "map"
#include "string.h"

int _tmain(int argc, _TCHAR* argv[])
{
map<string, int> testmap;
}

1>g:\code-work\test\test\test.cpp(11) : error C2065: 'map' : undeclared identifier
1>g:\code-work\test\test\test.cpp(11) : error C2065: 'string' : undeclared identifier
1>g:\code-work\test\test\test.cpp(11) : error C2062: type 'int' unexpected
展开
 我来答
可以叫我表哥
推荐于2017-09-03 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
1、使用map
使用map得包含map类所在的头文件
#include <map> //注意,STL头文件没有扩展名.h

map对象是模板类,需要关键字和存储对象两个模板参数:
std:map<int, string> personnel;
这样就定义了一个用int作为索引,并拥有相关联的指向string的指针.

为了使用方便,可以对模板类进行一下类型定义,

typedef map<int, CString> UDT_MAP_INT_CSTRING;
UDT_MAP_INT_CSTRING enumMap;

2、在map中插入元素

改变map中的条目非常简单,因为map类已经对[]操作符进行了重载

enumMap[1] = "One";
enumMap[2] = "Two";
.....

这 样非常直观,但存在一个性能的问题。插入2时,先在enumMap中查找主键为2的项,没发现,然后将一个新的对象插入enumMap,键是2,值是一个 空字符串,插入完成后,将字符串赋为"Two"; 该方法会将每个值都赋为缺省值,然后再赋为显示的值,如果元素是类对象,则开销比较大。可以用以下方法来避免开销:

enumMap.insert(map<int, CString> :: value_type(2, "Two"))

3、查找并获取map中的元素

下标操作符给出了获得一个值的最简单方法:

CString tmp = enumMap[2];

但是,只有当map中有这个键的实例时才对,否则会自动插入一个实例,值为初始化值。

可以使用Find()和Count()方法来发现一个键是否存在。

查找map中是否包含某个关键字条目用find()方法,传入的参数是要查找的key,在这里需要提到的是begin()和end()两个成员,分别代表map对象中第一个条目和最后一个条目,这两个数据的类型是iterator.

int nFindKey = 2; //要查找的Key
//定义一个条目变量(实际是指针)
UDT_MAP_INT_CSTRING::iterator it= enumMap.find(nFindKey);
if(it == enumMap.end()) {
//没找到
}
else {
//找到
}

通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据 iterator->first 和 iterator->second 分别代表关键字和存储的数据

4、从map中删除元素

移除某个map中某个条目用erase()

该成员方法的定义如下

iterator erase(iterator it); //通过一个条目对象删除
iterator erase(iterator first, iterator last); //删除一个范围
size_type erase(const Key& key); //通过关键字删除
clear()就相当于 enumMap.erase(enumMap.begin(), enumMap.end());
huanen64
2011-08-12 · 贡献了超过126个回答
知道答主
回答量:126
采纳率:0%
帮助的人:43.3万
展开全部
问题补充:只是将mapx图层添加到vc中,这是做mapx我想将图层添加到界面上,怎么添加?我看到mapx帮助你可以用数据结构显示图层,也可以用不同的内存DC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ap4780510
2011-08-12 · 超过12用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:21.2万
展开全部
可以在软件中嵌入HTML节点,利用JAVASCRIPT的API定制你自己的地图。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灌胶点胶机制造37
2011-08-12 · TA获得超过120个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:248万
展开全部
#include <map>
using namespace std;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式