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

来源:互联网 发布:换手率短线炒股软件 编辑:程序博客网 时间:2024/04/30 23:36
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

原创粉丝点击