我有一个结构,它的简化形式如下:
struct Flags {
const std::array<unsigned int, 8> flags;
Flags(std::vector<unsigned int> initialFlagValues) : flags(initialFlagValues) {}
};
当然不编译。就我的程序而言,我想flags
根据std::vector
传入结构的构造函数的参数(,C样式数组或其他)的长度来初始化中的任意数量的元素。
现在,我想std::array
在struct内部使用,因为struct本身被创建了很多次(因此std::vector
,由于许多分配/取消分配,这里a并不理想),但是flags
其中需要初始化的值的数量并不总是相同。
有没有一种方法可以flags
根据作为参数传递给构造函数的序列容器的大小来初始化特定数量的字段?
使用辅助函数,也许以lambda的形式:
Flags(std::vector<unsigned int> initialFlagValues) :
flags([](const auto& init) {
std::array<unsigned int, 8> flags;
// bounds check omitted for brevity
std::copy(init.begin(), init.end(), flags.begin());
return flags;
}(initialFlagValues))
{}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句