STL顺序容器vector,list和deque
2017-04-30 17:26
549 查看
顺序容器是通过将指定类型的元素按照位置顺序进行存储和访问的一种容器类型.
STL标准库中的顺序容器有三种:vector, list, 和deque(double ended queue双端队列,读[dɛk])
三个容器对应的头文件:
一,容器的通用构造函数, 假设容器类型为vector, 保存的元素类型为int则有:
顺序容器专有构造函数:
二, 支持常规的算术运算符, 其中vector和deque由于连续存储, 所以和指向数组的指针一样支持一些特殊的算术运算:
it + n
it - n
it1 += it2
it1 -= it2
it1 - it2
以及>, >=, <, <=
三, 容器使用自己容器类型定义的类型
比如vector类型的容器:
四, 顺序容器添加元素的函数
c.push_back(v)
c.push_front(v)
下面3个函数不适用与vector,vector没有insert函数:
c.insert(it, v)//在it前插入v,即使it是end()也同样满足,因为是从前面插入,返回新添加元素的迭代器
c.insert(it, n, v)//在it前插入n个v值的元素, 返回void
c.insert(it, b, e)//在it前插入某对象迭代器b到e之间的元素, 返回void
五, 元素访问方式
如果是vector和deque类型的容器也可以使用下标vec
或者vec.at(n)的方式索引元素,在使用这四种方式访问元素之前都必须先确认元素确实存在!
六, 元素的删除操作
c.erase(it)
c.erase(b, e)
c.clear()
c.pop_back()
c.pop_front //vector不可以从前端删除,影响效率
STL标准库中的顺序容器有三种:vector, list, 和deque(double ended queue双端队列,读[dɛk])
三个容器对应的头文件:
#include <vector> #include <list> #include <deque>
一,容器的通用构造函数, 假设容器类型为vector, 保存的元素类型为int则有:
vector<T> vec;//默认构造 vector<T> vec(vec1);//同容器类型对象初始化 vector<T> vec(vec1.b, vec1.e);//迭代器范围b到e之间相同或可隐式转换的元素初始化
顺序容器专有构造函数:
vector<T> vec(n, v);//n个值为v的元素初始化 vector<T> vec(n);//n个值初始化,如果保存元素类型是类则调用其构造函数
二, 支持常规的算术运算符, 其中vector和deque由于连续存储, 所以和指向数组的指针一样支持一些特殊的算术运算:
it + n
it - n
it1 += it2
it1 -= it2
it1 - it2
以及>, >=, <, <=
三, 容器使用自己容器类型定义的类型
比如vector类型的容器:
vector<T>::iterator vector<T>::const_iterator vector<T>::size_type vector<T>::reverse_iterator vector<T>::difference_type vector<T>::value_type //容器保存的元素类型 vector<T>::reference//容器元素的引用类型 const_reference//const引用类型
四, 顺序容器添加元素的函数
c.push_back(v)
c.push_front(v)
下面3个函数不适用与vector,vector没有insert函数:
c.insert(it, v)//在it前插入v,即使it是end()也同样满足,因为是从前面插入,返回新添加元素的迭代器
c.insert(it, n, v)//在it前插入n个v值的元素, 返回void
c.insert(it, b, e)//在it前插入某对象迭代器b到e之间的元素, 返回void
五, 元素访问方式
vector<int>::reference first = *vec.begin(); vector<int>::reference first = vec.front();//第一个元素的引用 vector<int>::reference last = *--vec.end();//最后一个迭代器的前面一位 vector<int>::reference last = vec.back();//最后一个元素的引用
如果是vector和deque类型的容器也可以使用下标vec
或者vec.at(n)的方式索引元素,在使用这四种方式访问元素之前都必须先确认元素确实存在!
六, 元素的删除操作
c.erase(it)
c.erase(b, e)
c.clear()
c.pop_back()
c.pop_front //vector不可以从前端删除,影响效率
相关文章推荐
- STL 笔记(一) 顺序容器 vector、list、deque常用函数
- STL顺序容器【vector】【deque】【list】
- stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解
- STL 笔记(一) 顺序容器 vector、list、deque
- STL顺序容器【vector】【deque】【list】
- STL顺序容器(vector,list,deque)测试
- STL1—顺序容器vector list deque的基本知识
- stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解
- C++的STL容器之顺序性容器vector、list、deque
- 【STL】STL之顺序容器:vector、deque、list、forward_list、array、string
- STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map
- STL提供了三个最基本的容器:vector,list,deque
- stl容器的区别:vector list deque set map-底层实现
- STL中基本容器string、vector、list、deque、set、map之间的区别
- STL中基本容器string,vector,list,deque之间的区别
- stl容器区别: vector list deque set map-底层实现
- STL概览-序列容器vector,deque,list
- stl容器区别: vector list deque set map-底层实现
- 顺序容器vector、list、deque的区别
- 在STL中基本容器有: string、vector、list、deque、set、map