map的下边访问和vector的下标访问的区别
来源:互联网 发布:js修改input type 编辑:程序博客网 时间:2024/05/16 02:12
map这种容器的下边访问和Vector等容器的下标访问有本质的区别
对于Vector容器,用aVector[i]访问第i个元素时,如果元素不存在,容器不会增加元素,
而对于map,用aMap[key]
访问键key对应的对象时,如果该键对应的对象存在,则返回该对象(这和Vector一样),但是,当键值为key的元素不存在时,容器会自动的增加一个pair,键为key,而值则为一个容器定义时指定的类型并默认初始化(即,如果该类型为基本类型,则初始化为0,比如本例中,aMap[1]的使用会产生一个pair,<1,NULL>,若该类型为类类型,则调用默认构造函数初始化之)
显然,本例中,aMap[1]为NULL,后面的erase()不会执行,使得后面的
插入语句aMap.insert(1,new A())键值冲突
eg:如下代码会导致错误
#include <iostream>
#include <map>
using namespace std;
struct A
{
A(int i)
{
x=i;
}
int x;
};
int main()
{
map<int,A*> amap;
if ( amap[1] != NULL )
amap.erase(1);
amap.insert(make_pair(1,new A(1)));
amap.insert(make_pair(2,new A(2)));
amap.insert(make_pair(3,new A(3)));
return 0;
}
- map的下边访问和vector的下标访问的区别
- map这种容器的下边访问和Vector等容器的下标访问有本质的区别。
- map的insert和下标[]访问的区别
- std::map的insert和下标[]访问
- std::map的insert和下标[]访问
- std::map的insert和下标[]访问
- map的insert和下标[]访问
- std::map的insert和下标[]访问
- std::map的insert和下标[]访问
- std::map的insert和下标[]访问
- Vector用数组下标访问的条件
- C++ vector的访问(resize,pu_back与下标访问的区别)
- NYOJ+Map的使用利用数组下标访问
- vector的访问
- C++下标操作和安全的随机访问
- swift的字符串的下标访问
- NYOJ 贪心 vector的使用,是一个数组,有重复数据,可以下标访问
- C++中map<int,vector<int>>的初始化和访问方法
- Microsoft SQL Server 错误:948 5120 5133
- (转)struts2开发环境中,enctype="multipart/form-data"上传文件时,request.getInputStream()为null
- struts2 ognl表达式 后台获取不到值
- 一网打尽当下NoSQL类型、适用场景及使用公司
- java.lang.NoClassDefFoundError: javax/mail/MessagingException
- map的下边访问和vector的下标访问的区别
- 00_设计模式备忘录
- 01_责任链模式
- 02_中介者模式
- 将博客搬至CSDN
- Tornado 配置EditPlus编辑器
- S3C2440 UART介绍
- 值得收藏的14款响应式前端开发框架
- cin