std::vector 如何进行resize
时间: 2024-04-08 10:26:20 浏览: 171
std::vector是C++标准库中的一个容器,用于存储动态大小的元素序列。resize()函数是std::vector提供的一个成员函数,用于改变vector的大小。
resize()函数有两种形式:
1. resize(n):将vector的大小调整为n,如果n小于当前大小,则删除多余的元素;如果n大于当前大小,则在末尾添加默认构造的元素。
2. resize(n, value):将vector的大小调整为n,如果n小于当前大小,则删除多余的元素;如果n大于当前大小,则在末尾添加value值的元素。
例如,假设有一个vector v,初始大小为3:
```
std::vector<int> v = {1, 2, 3};
```
使用resize()函数可以改变v的大小:
```
v.resize(5); // 调整大小为5,添加两个默认构造的元素
```
此时,v的内容变为{1, 2, 3, 0, 0}。
另外,如果需要缩小vector的大小,可以使用resize()函数的形式一:
```
v.resize(2); // 缩小大小为2,删除多余的元素
```
此时,v的内容变为{1, 2}。
相关问题
std::vector<vector<std::string>, vector<std::string>> CameraSnAndFilePathVector 赋值
`std::vector<vector<std::string>, vector<std::string>>` 是 C++ 中的一种数据结构,它是一个二维动态数组,内部包含了两个 `std::vector<std::string>`。其中每个元素都是一个包含字符串的向量。`CameraSnAndFilePathVector` 可能是一个用于存储相机序列号(CameraSN)和文件路径(FilePath)的容器。
如果你想要给这个变量赋值,你可以通过创建两个嵌套的向量,并将它们放入 `CameraSnAndFilePathVector` 中的对应位置。例如:
```cpp
std::vector<std::vector<std::string>> CameraSnAndFilePathVector;
// 假设我们有一些相机序列号和文件路径对
std::vector<std::string> cameraSn = {"001", "002", "003"};
std::vector<std::string> filePaths = {"/path/to/image1.jpg", "/path/to/image2.jpg", "/path/to/image3.jpg"};
// 现在将这些向量组合并赋值给 CameraSnAndFilePathVector
CameraSnAndFilePathVector.resize(cameraSn.size());
for (size_t i = 0; i < cameraSn.size(); ++i) {
CameraSnAndFilePathVector[i] = {cameraSn[i], filePaths[i]};
}
```
这样就完成了赋值。注意,这里假设了 `CameraSnAndFilePathVector` 的大小已经足够大来容纳所有的元素对,如果没有提前调整大小可能会导致运行错误。
std::vector<std::vector<int>>.resize()
### C++ 中 `std::vector<std::vector<int>>` 的 `resize` 方法
#### 使用说明
`std::vector<T>::resize` 函数用于改变向量的大小。当新的大小大于当前大小时,新位置会用指定的默认值填充;如果未提供,默认构造函数将被调用来初始化这些元素。
对于嵌套的 `std::vector<std::vector<int>>` 类型:
- 外层 `std::vector` 控制内部 `std::vector<int>` 向量的数量。
- 内部 `std::vector<int>` 则控制每一行中的整数数量[^1]。
#### 示例代码
下面是一个简单的例子来展示如何调整二维向量的尺寸并赋初值:
```cpp
#include <iostream>
#include <vector>
int main() {
// 创建一个空的二维向量
std::vector<std::vector<int>> matrix;
// 将外层数组设置为3个元素, 每个内层数组有4个初始值为7的元素
matrix.resize(3, std::vector<int>(4, 7));
// 输出矩阵内容验证结果
for (size_t i = 0; i < matrix.size(); ++i) {
for (size_t j = 0; j < matrix[i].size(); ++j)
std::cout << matrix[i][j] << " ";
std::cout << "\n";
}
return 0;
}
```
此程序创建了一个 3×4 的矩阵,并将其所有元素设为了数值 7。
#### 动态调整内外两层大小的例子
有时可能需要分别独立地调整外部和内部向量的大小,在这种情况下可以这样做:
```cpp
// 假定matrix已经定义好了
// 改变外层大小至5个子向量
matrix.resize(5);
for(auto& row : matrix){
// 对每一个row重新设定其长度为6
row.resize(6);
}
// 或者更简洁的方式一次性完成上述操作
matrix.assign(5, std::vector<int>(6));
```
以上两种方式都可以实现相同的效果——即把整个二维数组重置成一个新的形状。
阅读全文
相关推荐
















