C++ Primer Plus学习笔记之STL容器
一,容器的概念
容器是存储其他对象的对象。被存储的对象必须是同一种类型,它们可以是OOP意义上的对象,也可以是内置类型值。
二,容器的分类
1,序列容器
vector,deque,queue,list,stack,priority_queue
2,关联容器
set,multiset,map,multimap
三,容器变量的定义(以vector为例)
1,vector<int> v;定义一个空容器,向容器中添加元素只能用v.push_back()等等,通过下标访问非法
2,vector<int> v(100);定义一个大小为100的容器,向容器中添加元素既可以通过下标也可以通过函数操作
3,vector<int> v[100];定义一个大小为100的数组,数组中元素的类型是向量,向量的元素类型是int
4,vector<vector<int> > v(100);定义一个二维向量,相当于二维数组,行数为100,与3是等价的定义
注意它们几个的声明方式
四,序列容器的操作
T.front()返回容器首元素
T.back()返回容器尾元素
T.push_front()向容器首部添加元素
T.push_back()向容器尾部添加元素
T.pop_front()删除容器首部元素
T.pop_back()删除容器尾部元素
T.insert(p,t)将t插入到p的前面
T.erase(p)删除p指向的元素
T.clear()清空容器
四,关联容器的操作
关联容器将值与键关联在一起,并使用键来查找值。
set是关联集合,可反转,可排序,且键值是唯一的,所以不能存储多个相同的值。
set<string> s;
第二个模板参数是可选的,可用于指示用来对键值进行排序的比较函数或者对象,默认情况下将使用less<>
multimap也是可反转的,经过排序的关联容器,但键和值的类型不同,且同一个键可能与多个值关联
multimap<int ,string> m;
第三个模板参数是可选的,指出用于对键值进行的比较函数或者对象,在默认情况下将使用模板less<>
可以使用first,second成员来访问键和值
总结:
容器里有很多方便使用的方法,具体选用什么类型的容器,应该依据实际情况而定。