[TOC]
这几天由于C++程序设计的原因,我花了3天时间自学了一下C++。由于课程设计涉及到了MYSQL数据库的操作,之前用到的编程语言如JAVA、PHP都有类似键值对数组的东西。而C++中的map()函数也是一样的。
map函数是什么?
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!
简单的来说: Map是STL的一個容器,它提供一對一的hash。
它的标准形式为
Map<int, string> mapStudent;
- 第一个为关键字(key),再函数中只能map出现一次()
- 第二个为该关键字的值 (value)
形式就像 arr{
[0]=>['id']
}
这种形式的数组
map函数的构造方法
刚刚我们上面说的
Map<int, string> mapStudent;
只是构造函数的一种,还有一些常用的构造函数
如:
A | B |
---|---|
map<string , int >mapstring | map<int ,string >mapint |
map<sring, char>mapstring | map< char ,string>mapchar |
map<char ,int>mapchar | map<int ,char >mapint |
map的使用
- 引入头文件
#include<map> //引入map头文件
#include<string> //为了等会好用sting类
using namespace std; //一定要写上命名空间
- 变量声明
Map<int,string> test;
- 插入数据
Map插入数据有三种方式
- 用insert函數插入pair
test.insert(pair<int, string>(1, "test"));
例子程序:
#include<map>
#include<string>
#include<iostream>
using namespace std;
int main()
{
map<int, string > test;
test.insert(pair<int, string>(1, "test"));
cout << 输出<< test[1];
return 0;
}
结果:
输出 test
- 用"array"方式插入
test[0]= "xusupeng";
如:
int main()
{
map<int, string > test;
test[1] = "xusupeng";
cout << test[1];
return 0;
}
结果:
xusupeng
用insert函数插入value_type数据
这种和第一种插入效果是一样的,再这里就不再赘述了。3种插入方式的区别
虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值。大家可以自己代码去测试一下
- 遍历map(一维数组)
C++的遍历也可以和java一样用iterator
1.定义一个迭代器指针,使这个指针指向map的开始位置- it->first即我们定义数组的key,it->second即我们的值
#include<map>
#include<string>
#include<iostream>
using namespace std;
int main()
{
typedef map<int, string> Map;
Map test;
Map::iterator it; //定义一个迭代器指针
test[0] = "test1";
test[2] = "test2";
test[3] = "test3";
test[4] = "test4";
for (it = test.begin(); it != test.end(); it++) //指针指向map数组的开头位置
{
cout << it->first << " "<<it->second<<endl;
}
return 0;
}
代码结果:
0 test1
2 test2
3 test3
4 test4
(二维数组)
抱歉我试了半天都不能行,如果有会的请教教我
参考:
[1]:http://blog.csdn.net/sunshinewave/article/details/8067862
[2]:http://www.jb51.net/article/96053.htm
[3]: http://blog.csdn.net/sunquana/article/details/12576729