以下代码可按预期工作以初始化结构向量:
#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遇到的问题?
答案 0 :(得分:2)
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" }}
};