gpt4 book ai didi

c++ - 如何使用 initializer_list 创建结构的 C++

转载 作者:行者123 更新时间:2023-11-30 03:19:58 26 4
gpt4 key购买 nike

以下代码按预期工作以初始化结构 vector :

#include <array>
struct node
{
std::string name;
std::string value;
};

const std::vector<node> reqFields ({
{ "query", tmpEmail },
{ "firstname", firstName },
{ "lastname", lastName }
});

考虑到我的数据是静态的,我想稍微优化一下我的代码以改用 C++ 11 数组。但是,以下不会编译:

const std::array<node, 3>({
{ "query", tmpEmail },
{ "firstname", firstName },
{ "lastname", lastName }
});

初始化数组的正确语法是什么?或者这可能是 Visual Studio 15 遇到的问题?

最佳答案

std::vector有一个采用 initializer_list 的构造函数:

vector( std::initializer_list<T> init,
const Allocator& alloc = Allocator() );

但是std::array是一个聚合并遵循 aggregate initialization 的规则.

因此您需要从 () 切换到 {}

const std::array<node, 3> reqFields {
{{ "query", "tmp" },
{ "firstname", "firstName" },
{ "lastname", "lastName" }}
};

see it live on godbolt .

关于c++ - 如何使用 initializer_list 创建结构的 C++ <array>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234758/

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