(四)关联容器使用参考
Map的使用:
Map的关键所在就是通过关键码获取对应数据,这一点有点像数组,只不过map支持非整数索引的数组,比如可以这样访问数组元素:
#include "stdafx.h"
#include <map>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
map<char*,char*> student;
student["张三"] = "中国北京xx路xx号";//相当于student.insert()操作
student["李四"] = "中国香港xx路xx号";
student["约翰"] = "英国伦敦xx路xx号";
cout << student.size() <<endl;
map<char*,char*>::iterator it;
for(it = student.begin(); it != student.end(); it++)
{
cout << student[it->first] <<endl;
}
return 0;
}
/*<控制台输出结果>
中国北京xx路xx号
中国香港xx路xx号*/
英国伦敦xx路xx号
Press any key to continue
*/
姑且不论示例用法的合理性(编译能通过,但跳出很多警告,不知道啥原因),从这个用法我想可以体会map的最主要特征。当然map支持很多其他的操作,比如find,insert等常见操作。Map主要就是通过关键码取得对应的数据。
没必要用student[it->first],影响效率.
这样即可:
for(it = student.begin(); it != student.end(); it++)
{
cout << it->second <<endl;
}
map<char*,char*> 不对吧?你这里全是静态常量所以看不出来。
有两个问题,1。它们指向的字符串是不是能保证生存期 2。是字符串比较,还是指针比较
生存期好像不是问题;
测试结果应该是指针比较,如果是指针比较应该就没问题,,可比较,也可排序;
#include "stdafx.h"
#include <map>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
map<char*,char*> student;
{
char name1[] = "张三";
char addr1[] = "中国北京xx路xx号";
student[name1] = addr1;
student["李四"] = "中国香港xx路xx号";
student["约翰"] = "英国伦敦xx路xx号";
int i;
}
//i = strlen(name1); i and name1:undeclared identifier
cout << student.size() <<endl;
map<char*,char*>::iterator it;
for(it = student.begin(); it != student.end(); it++)
{
cout << student[it->first] << endl;
cout << it->second << endl;
}
return 0;
}
/*
控制台输出
中国北京xx路xx号
中国北京xx路xx号
中国香港xx路xx号
中国香港xx路xx号
英国伦敦xx路xx号
英国伦敦xx路xx号
Press any key to continue
*/
“不能保证生存期”!
你这样的测试没什么意义。就如同
char* GetName()
{
char name1[] = "张三";
return name;
}
在有的编译器下有时候也能得到你想要的字符串,但是这不能代表着就是正确的。无论如何,不应该写出这样的代码。
map的【】操作符只是拷贝了一个指针,这样就看出来了!
map<char*,char*> student;
{
char name[] = "张三";
student[name] = "北京";
memset(name,0,sizeof(name));
cout << "name is:" << name << endl;
}
map<char*,char*>::iterator it;
for(it = student.begin(); it != student.end(); it++)
{
cout << it->first << ":" << it->second << endl;
}
是指针比较,有问题。
生存期倒没问题,这里写的是char *,其实是const char *
诚招VC程序员参与计算机书籍出版
优厚的稿酬,诚招VC技术人员参与各种技术书籍出版。
通过该书籍,作者可以得到如下报酬:
1、丰厚的稿酬。
2、书籍著作的署名权。
3、对作者和书进行宣传,提高作者在技术圈子里的名气。
可异地兼职,如果您有这方面的兴趣和能力,请与我联系。
Email:sanqing_123@126.com
QQ:326098670
指针就是比较内存地址,地址是唯一的,那么就应该可比较,也可作为map的键,满足其内部排序的需要!
- 访问:37692次
- 积分:530分
- 排名:第17名
- 随笔:53篇
- 评论:128条
随笔分类
随笔归档
个人相册
阅读排行榜
- Nasm中文手册 (1952)
- win32 api (1620)
- MS挺周到的 (1505)
- wspiapi.h(45) : error C2265.....解决办法 (1470)
- 喜欢在C/C++代码中使用汇编得小心点用 (1216)
- 在派生类中重载基类的成员函数 (1188)
- 给类变量提供初始值的方法 (1115)
- 配置数据控件以使用通用数据链接 (.udl) 文件 (1081)
- (一)什么是C++? (1039)
- 信号量用法探讨 (1024)
评论排行榜
- (四)关联容器使用参考 (9)
- 配置数据控件以使用通用数据链接 (.udl) 文件 (8)
- win32 api (8)
- 生成随机数测试代码 (5)
- MS挺周到的 (5)
- wspiapi.h(45) : error C2265.....解决办法 (5)
- 给类变量提供初始值的方法 (5)
- Nasm中文手册 (5)
- (一)什么是C++? (4)
- 喜欢在C/C++代码中使用汇编得小心点用 (4)
最新评论
- 配置数据控件以使用通用数据链接 (.udl) 文件
Bertycalse: . . <a href=></a>. .
- 配置数据控件以使用通用数据链接 (.udl) 文件
MukkAlomo: . . <a href=></a>. .
- 配置数据控件以使用通用数据链接 (.udl) 文件
Zloksmoob: . . <a href=></a>. .
- 配置数据控件以使用通用数据链接 (.udl) 文件
Sadnus:zolpidem thailand ambien effectiveness zolpidem ta...
- Nasm中文手册
Sadnus:withdrawal symptoms of ambien zolpidem er 12.5mg t...
- 配置数据控件以使用通用数据链接 (.udl) 文件
KoipSiny:zolpidem 5mg ambien with alcohol zolpidem where to...
- Nasm中文手册
KoipSiny:withdrawal symptoms of zolpidem zolpide...
- 配置数据控件以使用通用数据链接 (.udl) 文件
FreaBox:average ambien dose highest dose of amb...
- Nasm中文手册
FreaBox:ambien addiction what is the generic na...
- 配置数据控件以使用通用数据链接 (.udl) 文件
Merjoum:ambien meds ambien prescription online ...