C++中的Vector是一种动态数组,可以在不确定数组大小的情况下使用,而且可以随时插入和删除元素。在一些情况下,我们需要截取Vector中的一部分元素,以供后续处理。C++中的Vector提供了三种截取操作,我们可以根据实际需求选择使用。
1. 使用erase()函数
C++的Vector类中提供了erase()函数用于删除指定位置的元素,我们可以通过指定起始位置和结束位置,删除这之间的元素,来实现截取的效果。示例代码如下所示:
vector<int> v 3;
v.erase(v.begin() + 1, v.begin() + 3);
//现在v中的元素为 1
注意,erase()函数是将指定位置之后的所有元素向前移动,来覆盖被删除的元素。因此,在删除大量元素时,这种方法的效率不如其他两种。
2. 使用resize()函数
C++的Vector类中提供了resize()函数用于改变Vector的大小,我们可以通过指定新的大小,并将原来的元素保留到新的大小,来实现截取的效果。示例代码如下所示:
vector<int> v 4;
v.resize(3);
//现在v中的元素为 2
注意,resize()函数是直接改变Vector的大小,因此,被截取的元素会被永久删除。在修改Vector的大小时,需要谨慎处理。
3. 使用迭代器和Vector构造函数
C++的Vector类还提供了一个特殊的构造函数,用于将指定的迭代器范围中的元素复制到新的Vector中,来实现截取的效果。示例代码如下所示:
vector<int> v 3;
vector<int> newV(v.begin() + 1, v.begin() + 4);
//现在newV中的元素为 2
注意,这种方法不会修改原始的Vector,而是复制了指定范围内的元素到一个新的Vector中。因此,被截取的元素会被保留在原始的Vector中。同时,必须注意迭代器的范围,以避免访问越界或重复访问元素。