STL
来源:互联网 发布:小米视频电视直播软件 编辑:程序博客网 时间:2024/06/05 16:34
STL包含三大类,容器类(可以存储其他对象的对象),算法(一系列封装好的函数),迭代器(用于遍历操作的类)
容器可以直接存储对象,也可以存储对象的指针。成熟的程序员喜欢使用间接存储。
容器主要包括两种类型:序列类(一般是线形存储)和关联类(一般是非线性存储)。
vector ---- 数组 可变长 不提供pop_front()删除头元素的函数
list ----- 链表
(1)Vector v[1000]当越界的时候,会出现段错误
v.at(1000) 越界的时候,会抛出out_of_range的异常,在程序中捕获
v.size() 返回长度,可利用这个循环迭代
v.empty()判断容器是否为空
Iterator迭代器 : 可以做取*操作 *iterator
iter->name <=> (*iter).name
iter++
v.begin() 指向数组的开始
v.end() 指向数组最后一个元素的后面,是一个结束标志
vector<int> v1;
vector<int>::iterator it; //iterator是vector的一个内部类
for( it = v1.begin(); it != v1.end(); it++ )
cout << *it << endl;
v.insert(iter,5); //在iter所指的元素前面插入5
v.insert(iter,5,100); //在iter所指的元素前插入5个100
这样的插入操作,会造成原来的iterator失效,对起重新赋值,可以保证继续使用
(2)list
不能做at()
多了push_front(),pop_front()
iter不能做加n操作
使用于做频繁的插入删除操作