c++ vector中全部置0
时间: 2023-11-21 20:54:45 浏览: 474
在C++中,可以使用多种方法将vector中的所有元素置为0。其中比较快的方法是使用std::fill函数,该函数需要传入vector的起始和结束迭代器以及要填充的值。具体实现代码如下:
```
const int n = 10000;
vector<int> v(n, 0); /* modify vector . . . */
std::fill(v.begin(), v.end(), 0);
```
除此之外,还可以使用迭代器迭代置零、assign置零、memset置零等方法。具体实现代码如下:
```
// 使用迭代器迭代置零
for (auto it=v.begin(); it!=v.end(); ++it) {
*it = 0;
}
// 使用assign置零
v.assign(v.size(), 0);
// 使用memset置零
memset(&v[0], 0, v.size() * sizeof v[0]);
```
相关问题
c++ 二维vector全置零
在C++中,二维vector的全置零可以通过两种主要方式实现:
1. 使用嵌套循环遍历二维vector的每个元素,并将它们设置为0。这种方法直观且易于理解,适用于不熟悉STL算法的开发者。
```cpp
#include <vector>
int main() {
int rows = 3; // 假设有3行
int cols = 4; // 假设有4列
std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols, 0)); // 初始化二维vector
// 使用嵌套循环遍历二维vector并置零
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = 0;
}
}
// 此时matrix中的所有元素都为0
}
```
2. 使用标准库中的`std::fill`或`std::fill_n`函数。这种方法更简洁,可以减少代码量,但可能需要对STL算法有一定的了解。
```cpp
#include <vector>
#include <algorithm> // 引入算法库
int main() {
int rows = 3; // 假设有3行
int cols = 4; // 假设有4列
std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols, 0)); // 初始化二维vector
// 使用std::fill_n对每个子vector调用std::fill
for (auto& row : matrix) {
std::fill(row.begin(), row.end(), 0); // 将当前行的元素全部置为0
}
// 此时matrix中的所有元素都为0
}
```
两种方法都可以实现二维vector的全置零,第一种方法更为直观,而第二种方法代码更加简洁。在实际编程中可以根据个人偏好和具体需求选择使用。
c++vector resize大小
C++中的`std::vector`类提供了`resize()`函数来改变向量的大小。这个函数有两个重载版本:
1. `void resize(size_type count);`[^1]
这个版本直接指定新大小。如果新大小大于当前大小,向量会扩展并用默认构造函数创建新的元素;如果新大小小于当前大小,向量会删除多余的元素。
2. `void resize(size_type count, const value_type& value);` 或 `void resize(size_type n, value_type val = value_type());`[^2]
这个版本不仅指定新大小,还提供了一个默认值。当向量扩展时,新创建的元素会被这个默认值初始化。
下面是一些示例:
- 扩大向量:
```cpp
std::vector<int> vec;
vec.resize(5); // 如果vec为空,向量将包含5个未初始化的int
```
- 缩小向量并用0填充:
```cpp
vec.resize(3, 0); // vec现在有3个元素,其余元素被置为0
```
- 使用特定值填充:
```cpp
vec.resize(5, 123); // vec将包含5个值为123的int
```
阅读全文