1、map的特性
和set一样,map的元素都会自动根据键值进行自动排列,map的所有元素都是pair类型,同时拥有实值和键值,pair的第一个元素为键值,第二个元素为实值,且map不允许两个键值相同的元素。
在学习map之前,我们先学习一下pair。
<stl_pair.h>
template<class T1, class T2>
struct pair{
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair():firs(T1()),second(T2()){}//构造函数
pair(const T1& a, const T2& b): first(a), second(b){}//构造函数
};
2、我们可以通过map的迭代器改变map的元素内容吗?
如果要改变键值,是不行的,但是如果要改变实值,是可以的。因此,map的迭代器既不是const iterator,也不是mutable iterator。
3、对容易犯错函数的说明
(1)首先是插入函数insert()
pair<iterator,bool> insert(const value_type& x){
return t.insert_unique(x);
}
插入函数的返回类型为pair类型,其中第二个代表插入是否成功,成功的话,前者将指向被插入的那个元素。
(2)下标操作符
下标操作符有两种用法,可能作为左值运用(内容可以被修改),也可能作为右值(内容不可修改)。如
map<string, int> simap;
simap[string("1")]=1;//左值,可以修改
int number=simap[string("1")];
4、multiset和multimap
multiset和multimap分别从set和map衍生而来,不同的是他们可以拥有相同的元素。
他们的底层插入函数是insert_equal而非insert_unique()。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。