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

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)
删除位置越接近头部越慢
只会使删除位置之后的迭代
器、指针、引用失效
删除位置越接近中间越慢
会使所有迭代器、指针、引用失效

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







阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/angeljing521/article/details/51546089
上一篇第十四周项目2-两个成员的类模板(2)
下一篇第十三周项目1-分数类中的运算符重载(改进)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭