您的位置:首页 > 编程语言 > C语言/C++

C++使用STL中map需要注意的地方

2017-07-09 18:47 531 查看
1、map中存放的数据为key-value(键-值对),数据结构为红黑树。

2、当key-value为非指针类型时,map会自动分配内存存储数据(是原数据的一份拷贝);因此,如果原数据保存在动态分配的内存空间中,内存空间delete以后,不会影响map的使用;此时调用的是自定义类的拷贝构造函数。

3、向map中插入的数据按key值从小到大自动排序,因此key值需要有比较功能;如果key为自定义类的对象,则类必须重载小于号,否则编译出错。

4、当key为自定义类CTest,并且自定义类CTest没有重载小于号,则定义map时需要指定比较类sort,形式如下:

class CTest

{

public:
CTest(){cout << "CTest()" << endl;}
~CTest(){}
CTest(const CTest &test)
{
a=test.a;
cout << "CTest(CTest test)" << endl;
}
//bool operator< (const CTest &test) const
//{
// if(a < test.a)  return true;

// return false;

//}

int a;

};

class sort

{

public:

bool operator()(const CTest &A, const CTest &B) const
{
if(A.a < B.a)  return true;

return false;
}

};

定义map时,格式为map<CTest,string,sort> m_mapTest;   //key为CTest,value为string,比较类为sort

参考文章:http://www.cnblogs.com/gmark/archive/2012/12/18/2822904.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ STL map