C++vector如何截断
时间: 2023-10-22 14:58:00 浏览: 212
引用[3]中提到,可以使用vector的assign函数来截断vector。具体操作是通过指定两个迭代器,将这两个迭代器之间的元素赋值给另一个vector。例如,如果要截断一个vector,只保留第2个元素到第6个元素,可以按照以下步骤进行操作:
1. 找到第2个元素的迭代器,即Arrs.begin() + 1。
2. 找到第6个元素的下一个位置的迭代器,即Arrs.begin() + 6。
3. 使用assign函数将这两个迭代器之间的元素赋值给另一个vector,例如Arr2.assign(Arrs.begin() + 1, Arrs.begin() + 6)。
这样,Arr2中就只包含第2个元素到第6个元素了。
相关问题
c++ vector assign
C++ vector 的 assign 函数可以用来替换 vector 中的元素,具体语法如下:
```
vector_name.assign(num, value);
```
其中,`num` 表示要替换的元素个数,`value` 表示要替换成的值。如果 `num` 大于 vector 中原有的元素个数,那么 vector 会扩容以容纳更多的元素。如果 `num` 小于等于 vector 中原有的元素个数,那么 vector 会截断多余的元素。
例如,下面的代码创建了一个包含 5 个元素的 vector,并将其中的元素都替换成了 0:
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec(5, 1);
vec.assign(5, 0);
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
0 0 0 0 0
```
c++ vector.resize
C++的vector类提供了多种重载的resize()函数来改变向量的大小。根据引用,resize()函数有两种版本:
1. `void resize(size_type n)`:此版本将向量的大小改变为n。如果n小于当前向量的大小,则会截断超出n的元素。如果n大于当前向量的大小,则会在末尾插入默认构造的元素。这种版本不会为新元素赋值。
2. `void resize(size_type n, const value_type& val)`:此版本将向量的大小改变为n。如果n小于当前向量的大小,则会截断超出n的元素。如果n大于当前向量的大小,则会在末尾插入val值的元素。这种版本会为新元素赋值为val。
根据引用,还有另一种版本:
3. `void resize(size_type n, value_type val = value_type())`:此版本与第二种版本相同,但是在没有提供val参数时,默认使用元素类型的默认构造函数来为新元素赋值。
所以,c vector.resize(n)将改变向量的大小为n,不会为新元素赋值;c vector.resize(n, val)将改变向量的大小为n,并将新元素赋值为val;c vector.resize(n, val)将改变向量的大小为n,并将新元素赋值为val(如果未提供val,则使用元素类型的默认构造函数来赋值)。