gpt4 book ai didi

c++ - 有没有有效的方法来获得大 vector ?

转载 作者:太空狗 更新时间:2023-10-29 23:07:25 24 4
gpt4 key购买 nike

我需要一个内部有 n 个元素的 vector (我的意思是大小而不是 vector 的容量是 n),但不想在创建过程中初始化它们中的任何一个,因为这对我来说只是垃圾。有什么有效的方法可以实现这一目标吗?

编辑:我所能想象的就是使用 reserve(n) 并做一些 hack(有人能告诉我怎么做)让 vector 相信它有 n 个元素。或者我只是跳进一个污水坑,用 malloc 和 free 跳舞。

最佳答案

当您使用带有size 参数的构造函数构造一个 vector (并且不指定要复制到 vector 中的元素)时,元素将被值初始化。值初始化规则 (8.5p7) 指定基元是零初始化的。

解决此问题的唯一方法是将原语包装在定义无操作默认构造函数的类类型中:

template<typename T>
struct A {
A() {};
T value;
};

std::vector<A<int>> vec(1000);

如果能把初始化过程封装成一个迭代器,就可以用迭代器来构造vector:

std::vector<int> vec(it_begin, it_end);

否则我建议不要太担心初始化的开销;它不会改变您的算法的复杂性(因为无论如何您都将访问每个成员,这已经使它成为 O(n))。

关于c++ - 有没有有效的方法来获得大 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954367/

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