[英]Initialize std::vector in a struct
I have a struct with 2 std::vector
s as given below.我有一个带有 2 个
std::vector
的结构,如下所示。 I want to initialize the vector with 2048 elements having initial value 0.0.我想用初始值为 0.0 的 2048 个元素初始化向量。
struct PixelMaps
{
vector<double> pixelMapX;
vector<double> pixelMapY;
};
I tried the following code.我尝试了以下代码。 This creates the vector of 2 elements only.
这仅创建 2 个元素的向量。 How can I initialize the structure with 2048 elements in a single statement with initialization list?
如何在带有初始化列表的单个语句中初始化具有 2048 个元素的结构?
PixelMaps test{ {2048,0.0}, {2048, 0.0} };
std::vector
has a constructor using std::initializer_list
, so you can't use brace-init-list - it will always end up in that constructor. std::vector
有一个使用std::initializer_list
的构造函数,因此您不能使用大括号初始化列表 - 它总是会出现在该构造函数中。 You need more explicit initialization:您需要更明确的初始化:
PixelMaps test{ std::vector(2048,0.0), std::vector(2048, 0.0) };
Or (pre C++17)或(C++17 之前)
PixelMaps test{ std::vector<double>(2048,0.0), std::vector<double>(2048, 0.0) };
Depending on your C++ taste, in C++20 you could write根据您的 C++ 品味,在 C++20 中您可以编写
#include <vector>
struct PixelMaps
{
std::vector<double> pixelMapX;
std::vector<double> pixelMapY;
};
int main()
{
PixelMaps test {
.pixelMapX {std::vector(2048,0.0)},
.pixelMapY {std::vector(2048,0.0)}
};
}
This is known as designated initialization .这称为指定初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.