【发布时间】:2021-11-17 12:34:42
【问题描述】:
我只是想知道是否可以同时 new 和初始化一个 std::vector,就像,在一行中做两件事:
std::vector<int>* vec = new std::vector<int>(){3, 4};
而不是,首先:
std::vector<int>* vec = new std::vector<int>();
然后:
vec->push_back(3);
vec->puch_back(4);
【问题讨论】:
-
不仅如此,甚至没有必要使用
new。 -
newstd::vector是可疑的顺便说一句。std::vector<int> vec{3, 4};足够了吗? -
向量已经动态管理它的内存。几乎没有理由直接
new向量本身。 -
@HuXixi “但是我需要一个在堆上创建的向量,所以我需要一个新的” 你从哪里学来的?如前所述
std::vector<T>已经动态分配内存。 -
@HuXixi 如果你真的认为你需要一个动态分配的指针,不如使用
std::unique_ptr<std::vector<T>>或std::shared_ptr<std::vector<T>>并明确决定所有权。
标签: c++ c++11 constructor initialization stdvector