c++ vector resize
时间: 2023-10-11 18:09:31 浏览: 154
vector的resize函数用于改变向量的大小。它接受一个参数,表示向量的新大小。如果新大小比原来的大小小,那么多出来的元素将被删除。如果新大小比原来的大小大,那么多出来的元素将以默认值填充。
下面是一个示例代码:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 改变向量的大小为10,并用0填充多出来的元素
vec.resize(10);
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
```
输出结果为:1 2 3 4 5 0 0 0 0 0
相关问题
C++ vector resize
C++ vector的resize()函数可以改变vector的大小,它有两个重载形式:
1. `void resize(size_type n)`:将vector的大小改为n,如果n小于当前大小,则删除多余的元素;如果n大于当前大小,则在末尾添加默认构造的元素。
2. `void resize(size_type n, const value_type& val)`:将vector的大小改为n,如果n小于当前大小,则删除多余的元素;如果n大于当前大小,则在末尾添加val指定的元素。
例如,以下代码将一个vector的大小改为10,多余的元素将被删除:
```
vector<int> v = {1, 2, 3, 4, 5};
v.resize(10);
```
以下代码将一个vector的大小改为5,多余的元素将被默认构造:
```
vector<int> v(10, 1);
v.resize(5);
```
c++ vector resize reserve
C++中的`std::vector`类提供了`resize`和`reserve`两个函数来调整容器的大小。
`resize`函数用于改变容器中元素的数量。它接受一个参数来指定新的大小,并可选择一个参数来指定新元素的默认值。当新的大小大于当前容器的大小时,会在末尾添加新元素;当新的大小小于当前容器的大小时,会删除末尾的元素。如果新的大小超出了容器的当前容量,会自动增加容量以适应新的大小。例如:
```cpp
std::vector<int> vec;
vec.resize(5); // vec中有5个默认值为0的int元素
vec.resize(10, 1); // vec中有10个值为1的int元素
```
`reserve`函数用于预留容器的内存空间,但不会改变容器中元素的数量。它接受一个参数来指定要预留的内存空间大小。如果预留的大小小于当前容器的大小,则不会有任何效果。预留内存空间可以提前分配好,以避免频繁的重新分配和复制操作,从而提高性能。例如:
```cpp
std::vector<int> vec;
vec.reserve(100); // 预留100个int元素的内存空间
```
需要注意的是,`resize`和`reserve`都不会自动初始化新增的元素,如果需要初始化,可以使用适当的构造函数或迭代器来实现。
阅读全文