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;
}
};
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
阅读全文
0 0
- C++使用STL中map需要注意的地方
- C语言使用需要注意的地方
- Spring使用中需要注意的地方
- HttpURLConnection使用中需要注意的地方
- C语言中需要注意的一些地方
- c语言中需要注意的一些地方
- C语言中移位符需要注意的地方
- C语言(5) 函数使用需要注意的地方
- access中使用SQL语句需要注意的几个地方
- 在FLEX中使用CSS需要注意的地方
- delphi中使用override需要注意的地方
- Flex中使用全屏设置和需要注意的地方
- Tomcat中使用JNDI时需要注意的地方
- C#中使用事物需要注意的地方
- MyBatis Migrations使用中需要注意的地方
- sql server中使用组合索引需要注意的地方
- Android Adapter中使用Holder 需要注意的地方
- C Tips:需要注意的地方
- laravel 模型关联 的简单使用方法
- Android进程通讯
- 大数据R安装依赖库
- SpringMVC数据转换
- 八幅漫画理解使用JSON Web Token设计单点登录系统
- C++使用STL中map需要注意的地方
- Android自定义ViewGroup
- 卸载VMware-tools
- 水题 第二站 FatMouse' Trade
- pkg-config
- Spring Boot1.52 Spring Security Spring Data Jpa 整合
- Android图像缩放
- Go编程基础—import下划线的作用
- Multi-class Classication (多分类问题)实例--手写数字识别