相关疑难解决方法(0)

为什么std :: array没有一个构造函数来为数组填充一个值?

是没有

std::array<T,size>::array(const T& value);
Run Code Online (Sandbox Code Playgroud)

疏忽?它似乎对我有用,而动态容器(如std::vector)确实有类似的构造函数.

我完全清楚

std::array<T,size>::fill(const T& value);
Run Code Online (Sandbox Code Playgroud)

但这不是构造函数,内存将首先归零.如果我想什么都-1好像这个家伙

c++ c++11 stdarray

72
推荐指数
4
解决办法
3万
查看次数

初始化一个非默认可构造元素的std ::数组?

假设foo_t具有命名构造函数的类型,make_foo().现在,我想要真正拥有123个foo - 不多也不少.所以,我在考虑一个std::array<foo_t, 123>.现在,如果foo_t是默认构造的,我会写:

std::array<foo_t, 123> pity_the_foos;
std::generate(
    std::begin(pity_the_foos), std::end(pity_the_foos),
    []() { return make_foo(); }
);
Run Code Online (Sandbox Code Playgroud)

而鲍勃是我的叔叔,对吗?不幸的是...... foo_t没有默认的ctor.

那么我应该如何初始化我的数组呢?我是否需要使用一些可变模板扩展伏都教?

注意:如果有帮助,答案可能会使用C++ 11,C++ 14或C++ 17中的任何内容.

c++ initialization default-constructor c++11 stdarray

8
推荐指数
1
解决办法
481
查看次数