gpt4 book ai didi

c++ - 用指定数量的单元化空间初始化一个 vector

转载 作者:行者123 更新时间:2023-11-30 01:20:02 24 4
gpt4 key购买 nike

基本上我希望能够做这样的事情

std::vector<int> myInts(3); 
myInts.push_back(1);
myInts.push_back(2);
myInts.push_back(3);

从概念上讲,我希望 vector myInts 只有 3 个空格,值为 {1, 2, 3}

显然,如果您在 C++ 中运行上述代码,结果将是 {0, 0, 0, 1, 2, 3}

C++ 的主要目标之一是效率,但在我看来,在第一行代码中,将 0 分配给初始化 vector 是不必要的。

你怎么看? “用指定数量的未初始化空间初始化一个 vector ”是可以实现的吗?

最佳答案

问题是您正在创建一个包含三个 0 的 vector ,然后再向后推三个元素。要实例化一个值为 1、2 和 3 的 vector ,您可以这样做:

std::vector<int> myInts{1,2,3};

或者,您可以实例化一个空 vector ,调用 reserve 以避免重新分配,然后推回值:

std::vector<int> myInts;
myInts.reserve(3);
myInts.push_back(1);
myInts.push_back(2);
myInts.push_back(3);

调用 reserve 的效果是为三个元素分配足够的空间,而无需初始化任何元素。

关于c++ - 用指定数量的单元化空间初始化一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19979847/

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