首页 理论教育 掌握vector的其他操作

掌握vector的其他操作

时间:2023-08-20 理论教育 版权反馈
【摘要】:vector以及其他的顺序容器都支持assign操作。动手写12.2.2动手写12.2.2展示了resize操作的应用,运行结果如图12.2.2所示:图12.2.2resize操作我们可以看到,第一次resize操作丢弃了vec最后的3和4,而第二次resize用0填充了未初始化的元素。动手写12.2.3动手写12.2.3展示了会让迭代器失效的操作,运行该程序会造成程序崩溃,因为在删除了元素之后,it就失效了,我们需要利用erase()的返回值或其他方法重新定位到被删除的元素之后的元素。

掌握vector的其他操作

vector以及其他的顺序容器都支持assign操作。assign操作可以将容器中的现有内容删除,并用其他容器中一定范围内的元素填充,或是填充一定数目的相同元素。下面我们来看一个示例:

动手写12.2.1

动手写12.2.1展示了assign操作,运行结果如图12.2.1所示:

图12.2.1 assign操作

我们可以看到,assign操作可以将指向其他容器元素的两个迭代器范围内的元素赋值给当前容器,也可以将n个同样的元素赋值,每次赋值前都会清空当前容器。assign的语义与赋值操作符的区别就在于赋值操作符只能将整个容器的元素都赋值,而assign可以选取其中的一部分。

另一个顺序容器支持的操作是resize。resize会改变容器的大小,并截掉多余的部分或填补多出的部分。

动手写12.2.2

(www.xing528.com)

动手写12.2.2展示了resize操作的应用,运行结果如图12.2.2所示:

图12.2.2 resize操作

我们可以看到,第一次resize操作丢弃了vec最后的3和4,而第二次resize用0填充了未初始化的元素。

需要注意的是,一些基于迭代器的操作在修改了容器之后,会让一些现有的用来遍历的迭代器失效,所以我们在遍历的时候需要注意是否会有迭代器失效的可能。

动手写12.2.3

动手写12.2.3展示了会让迭代器失效的操作,运行该程序会造成程序崩溃,因为在删除了元素之后,it就失效了,我们需要利用erase()的返回值或其他方法重新定位到被删除的元素之后的元素。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈