gpt4 book ai didi

c++ - 初始化结构 vector

转载 作者:太空狗 更新时间:2023-10-29 20:00:06 28 4
gpt4 key购买 nike

让我拥有

struct Vector {

float i,j,k;
}

我想将下面声明的 vec 的所有元素归零 (i,j,k=0)

std::vector <Vector> vec;
vec.resize(num,0);

我不想使用 reserve() 然后 push_back() 一个一个地归零。还有一点就是,在成功初始化vec之后,我想在操作完vec之后,再次将vec的所有成员置零。是否有类似 memset 的 vector ?

编辑:我比较了 Mike Seymour 和 Xeo 的答案中的所有方法,结果size_t size = vec.size();
vec.clear();
vec.resize(size);
如果它们在循环中频繁重复,则速度最快。

最佳答案

这很简单:

vec.resize(num);

或用所需的大小初始化它:

std::vector<Vector> vec(num);

构造函数和resize 都会用值初始化对象填充新元素。没有默认构造函数(例如您的 Vector)的类型的值初始化对象会将所有数字成员初始化为零。

要将所有内容重置为零,要么

size_t size = vec.size();
vec.clear();
vec.resize(size);

或:

std::fill(vec.begin(), vec.end(), Vector());

或者,效率较低但具有强大的异常保证:

std::vector<Vector>(vec.size()).swap(vec);

关于c++ - 初始化结构 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com