STL—— 3种顺序容器的基本功能和特性

原创 2016年05月31日 16:28:50

1.顺序容器的基本功能

         STL中的顺序容器包括向量(vector)、双端队列(deque)和列表(list)

(1)构造函数

<span style="font-size:12px;">S s(n,t);  //构造一个由n个t元素构成的容器实例s。
S s(n);    //构造一个有n个元素的容器实例s,每个元素都是T()。
S s(q1,q2);//使用将[q1,q2)区间内的数据作为s的元素构造s。</span>

(2)赋值函数

<span style="font-size:14px;">s.assign(n,t)    //赋值后的容器由n个t元素构成。
s.assign(n)      //赋值后的容器有n个元素的容器实例s,每个元素都是T()。
s.assign(q1,q2)  //赋值后的容器的元素为[q1,q2)区间内的数据。</span>

(3)元素的插入

<span style="font-size:14px;">s.insert(p1,t)     //在s容器中,p1所指向的位置插入一个新的元素t,插入后的元素夹在原p1和p1-1所指向的元素之间,该函数会返回一个迭代器指向新插入的元素。
s.insert(p1,n,t)   //在s容器中p1所指向的位置插入n个新的元素t,插入后的元素夹在原p1和p1-1所指向的元素之间,没有返回值。
s.insert(p1,q1,q2) //将[q1,q2)区间内的元素顺序插入到s容器中p1位置处,新元素夹在原p1和p1-1所指向的元素之间。</span>

(4)元素的删除

<span style="font-size:14px;">s1.erase(p1)   //删除s1容器中p1所指向的元素,返回被删除的下一个元素的迭代器。
s1.erase(p1,p2)//删除s1容器中[q1,q2)区间内的元素,返回最后一个被删除元素的下一个元素的迭代器。</span><strong style="font-size:18px;">
</strong>
(5)改变容器的大小

<span style="font-size:14px;">s1.resize(n)  //将容器的大小变为n,如果原有的元素个数大于n,则容器末尾多余的元素会被删除;如果原有的元素个数小于n,则在容器末尾会用T()填充。</span>
(6)首尾元素的直接访问

s.front()    //获得容器首元素的引用。
s.back()     //获得容器尾元素的引用。
(7)在容器尾部插入、删除元素

<span style="font-size:14px;">s.push_back(t)  //向容器尾部插入元素t。
s.pop_back()    //将容器尾部的元素删除。</span>
(8)在容器头部插入、删除元素

<span style="font-size:14px;">s.push_front(t)  //向容器头部插入元素t。
s.pop_front()    //删除容器头部的元素t。</span>


2.顺序容器特性比较

操作 向量(vector) 双端队列(deque) 列表(list)
随机访问 较慢 不能
头部插入
(push_front)
没有push_front,只能用insert
完成
快,
已有迭代器失效,已有指针、
引用不会失效
快,
已有迭代器、指针、引用
都不会失效
头部删除
(pop_front)
没有pop_front , 只能用erase
完成

只会使被删除元素的迭代器、
指针、引用失效

只会使被删除元素的迭代器、
指针、引用失效
尾部插入
(push_back)

当发生容器扩展时,会使所有已有
的迭代器、指针、引用失效,否则
不会使任何已有的迭代器、指针、
引用受到影响

已有迭代器失效,已有指针、
引用不会失效

已有迭代器、指针、引用都不
会失效
尾部删除
(pop_back)

只会使被删除元素的迭代器、指针、
引用失效

只会使被删除元素的迭代器、指针、
引用失效

只会使被删除元素的迭代器、指针、
引用失效
任意位置插入
(insert)
插入位置越接近头部越慢。
当发生容器扩展时,会使所有迭代器、
指针、引用失效,否则之后使插入位置
之后的迭代器、指针、引用失效
插入位置越接近中间越慢
会使所有迭代器、指针、
引用失效

只会使被删除元素的迭代器、指针、
引用失效
任意位置删除
(erase)
删除位置越接近头部越慢
只会使删除位置之后的迭代
器、指针、引用失效
删除位置越接近中间越慢
会使所有迭代器、指针、引用失效

只会使被删除元素的迭代器、指针、
引用失效







版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

【C++/STL】list的实现(没有采用迭代器和空间配置器所实现的双向链表的基本功能)

#include using namespace std; //没有采用迭代器和空间配置器所实现的双向链表的基本功能 template ...

顺序栈基本功能的实现

/* * 功能:顺序栈的实现 * 作者:风清扬 * 日期:2014-12-30 */ #include #include #include #define TRUE 1 #define FA...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

shell基础-bash基本功能-多命令顺序执行与管道符

1. 多命令顺序执行 多命令执行符 基本格式 作用 ; 命令1 ; 命令2 多个命令按照先后顺序执行,命令之间没有逻辑关系。 && 命令1 && 命令2 逻辑与。 ...

2015华为软赛(五)——基本功能函数

2015年5月华为组织了一次软件精英挑战赛,赛题是德州扑克手牌AI

CSDN博客与ITEYE博客网站深入比较分析(一)——基本功能对比分析

IT行业博客网站分析(一)——基本功能对比分析                两家博客网站虽然同属于CSDN集团,但各有其风格。但是因为 IT产业的产品越来越呈...

OpenCV 2.4.9 学习笔记(1)—— 基本功能结构

一些关于OpenCV(2.4.9版本)的学习笔记 包括安装与配置, 基本模块结构及API说明

Rstudio学习笔记——基本功能与操作

Rstudio界面如下所示,简单地分为四个窗口,从左至右分别是程序编辑窗口,工作空间与历史信息,程序运行与输出窗口(主界面),画图和函数包帮助窗口。 1. 主界面(Console)。   ...

Unity中国象棋(五)——网络对战的实现(服务端的基本功能)

博主主要是用了socket的方法去实现了服务器和客户端之间的通信,由于楼主对于socket网络编程这一方面的基础相当薄弱,故也是边学边学,有些地方的代码不够完善还请大神指正!博主还需学习。 首先,...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)