STL学习之vector与deque

来源:互联网 发布:linux ramdisk 编辑:程序博客网 时间:2024/06/05 08:05

vector:
构造函数:
vectorvec;//默认
vectorvec(n);//确定大小
vectorvec(n,10);//n个10
vectorvec(vec2);//拷贝
vectorvec{1,2,3,4,5};//列表
vectorvec(begin,end);//复制迭代器间内容

容量:
vec.size();
vec.capacity();
vec.resize(n);//扩大填充0,缩小直接截取
vec.resize(n,data)//填充data
vec.max_size();
vec.empty();
vec.clear();//清除元素,capacity还在,但无法访问
vec.reserve(n);//预留空间,无法访问, resize则可以访问

添加,插入,替换元素:
vec.push_pack(数据);
vec.pop_back();
vec.insert(位置,插入数据);//用迭代器指定插入的位置,数据可用迭代器 或 n,T 或 直接 T 指定
//如果直接插入一个数据,可以返回插入数据的迭代器
vec.erase(位置);//位置用迭代器指定,可范围可点
vec.assign(数据);//整体替换,数据用迭代器确定范围或n,T
vec.emplace_back(初始化列表);

emplace_back与pusk_back的区别:
调用emplace_back会在容器管理的内存空间中直接创建对象并调用构造函数
push_back则创建一个临时对象,并压入容器中
另外,emplace对应insert ,emplace_back对应pusk_back,emplace_front对应pusk_front

deque:
除了可直接使用push_front(); pop_front()其他操作与vector无差异
在需要向两端插入数据的场合应该使用deque

0 0
原创粉丝点击