c++ vector中全部置0
时间: 2023-11-21 13:54:45 浏览: 86
在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]);
```
相关问题
将vector置为空c++
要将vector置为空,可以使用以下方法:
```c++
vector<int> v;
v.clear();
```
其中,`clear()`函数会将vector中的所有元素清空,使其变为空。另外,如果需要在创建vector时就将其置为空,可以直接使用无参构造函数:
```c++
vector<int> v;
```
c++ Eigen::Vector4f初始化置空值
在 C++ 中,可以使用以下方式将 `Eigen::Vector4f` 置空:
1. 直接赋值为 0 向量:
```
#include <Eigen/Core>
Eigen::Vector4f v(1.0f, 2.0f, 3.0f, 4.0f); // 定义并初始化一个 Vector4f
v = Eigen::Vector4f::Zero(); // 将 Vector4f 置空
```
在这个例子中,`Eigen::Vector4f` 类型的变量 `v` 被初始化为 (1.0, 2.0, 3.0, 4.0) 这个向量。当你将 `v` 赋值为 `Eigen::Vector4f::Zero()` 时,它的值将被重新设置为 (0.0, 0.0, 0.0, 0.0) 这个向量,即置空向量。
2. 使用默认构造函数重新初始化:
```
#include <Eigen/Core>
Eigen::Vector4f v(1.0f, 2.0f, 3.0f, 4.0f); // 定义并初始化一个 Vector4f
v = Eigen::Vector4f(); // 使用默认构造函数重新初始化 Vector4f
```
在这个例子中,当你将 `Eigen::Vector4f` 类型的变量 `v` 赋值为 `Eigen::Vector4f()` 时,它的值将被重新设置为空的 `Vector4f`,即置空向量。
需要注意的是,使用默认构造函数重新初始化 `Eigen::Vector4f` 会完全销毁原有的元素,并重新分配内存,因此可能会导致性能问题。而直接赋值为 0 向量则更加高效。