std :: array中元素构造函数的参数

有人

以下将按预期打印“ 1 \ n 1 \ n 1”。我可以构造“ ar”以使其打印“ 2 \ n 2 \ n 2”而不给它一个明确的初始化列表吗(... ar = {A(2),A(2),A(2) })?

#include <iostream>
#include <array>

class A {

public:
    A(int i=1) : m_i(i) {};
    int m_i;
};

int main() {

    std::array<A, 3> ar;

    for(auto& v : ar) {
        std::cout << v.m_i << std::endl;
    }

}
恶魔

并不真地; array没有像vector有趣的构造函数vector(size_type, T = T())

您可以获得的最接近的是使用fill,可能带有初始化的lambda:

std::array<A, 3> ar = []{ std::array<A, 3> ar; ar.fill(2); return ar; }();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用相同的构造函数参数初始化所有元素或std :: array

如何使用std :: array构造函数参数C ++列表初始化const std :: array成员

没有参数的std :: thread构造函数

std :: threads构造函数参数错误

带有 std::array<> 的构造函数委托

如何在类构造函数中使用参数初始化std :: array的大小?

从可变参数模板数组引用构造函数初始化双嵌套std :: array

使用 std:array 作为函数的参数

从构造函数参数推导std :: set的Compare类型

constexpr构造函数的参数类型'std :: function'不是文字类型

std::function 作为委托构造函数中的参数

为什么std :: vector的元素需要移动构造函数?

std :: vector是否具有{元素的初始数量}构造函数?

从Lambda构造std :: function参数

通过代码构造 std::array 并初始化元素对象

在类构造函数中设置std :: vector,为元素构造函数使用不同的值

std可选复制构造函数

构造函数使用std :: forward

是否可以为std :: array类型添加自己的构造函数?

std :: ifstream的行为很奇怪,临时std :: string()作为构造函数参数

为什么span的array和std :: array构造函数与其容器构造函数不同

std :: vector构造和元素的适当构造

如何构造std :: variant类型对象,其本身的Templated和构造函数转发参数

从具有可变参数模板构造函数的类型构造 std::function 对象

我可以通过非默认构造函数构造零元素的std :: vector吗?

为构造的std :: vector中的每个元素调用默认构造函数

如何在没有默认构造函数的情况下使用std :: transform创建std :: array

从noexcept函数参数的构造函数引发的异常是否会立即导致对std :: terminate()的调用?

定义一个以std :: array为参数的函数