gpt4 book ai didi

c++ - 使用初始化列表放置 vector

转载 作者:IT老高 更新时间:2023-10-28 22:18:47 24 4
gpt4 key购买 nike

我有一个 std::vector<std::vector<double>>并想在它的末尾添加一些元素所以这是我的试验:

std::vector<std::vector<double> > vec;
vec.emplace_back({0,0});

但这不会编译,而以下会编译:

std::vector<double> vector({0,0});

为什么emplace_back不能在这个位置构造元素?还是我做错了什么?

感谢您的帮助。

最佳答案

前面的答案提到,当您在行中构造 vector 并将其放置时,您可以获得要编译的代码。但是,这意味着您在临时 vector 上调用 move-constructor,这意味着您没有就地构造 vector ,而这就是使用 emplace_back 而不是 的全部原因push_back.

相反,您应该将初始化列表转换为 initializer_list,如下所示:

#include <vector>
#include <initializer_list>

int main()
{
std::vector<std::vector<int>> vec;
vec.emplace_back((std::initializer_list<int>){1,2});
}

关于c++ - 使用初始化列表放置 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24550924/

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