map是一种关联式容器,它有一个很常用的功能:提供key-value的存储和查找功能。结构体在C++中和类相似,它的数据成员和成员方法默认是
public。下面这段示例代码演示了如何在MAP中使用结构体,并实现查找和遍历功能。
typedef struct size{
int width;
int Heigh;
}simple;
typedef struct cc{
simple t;
char* str1;
char* str2;
int a;
}kk;
using namespace std;
//typedef map <int,kk,less<int>> MyMap;
typedef map<int,kk,less<int>> MyMap_Source;
MyMap_Source MyMap;
MyMap_Source::iterator theIterator;
kk a = {{12,23},"what","are",1};
kk b = {{12,24},"what","are",3};
kk c = {{12,25},"what","are",5};
int Index = 0;
MyMap[Index] = a;
MyMap[Index + 1] = b;
MyMap[Index + 2] = c;//这里用insert不行,而且[]只能用在插入操作,其他的操作不能用,不可以用在遍历中
theIterator = MyMap.find(2);//查找
if (theIterator != MyMap.end())
{
kk ad = theIterator->second;
simple d = ad.t;
}
当然我们也可以用迭代器来遍历map容器
for(theIterator = MyMap.begin(); theIterator != MyMap.end(); ++theIterator)
{
kk temp = theIterator->second;
}