std::array 中元素构造函数的参数
argument for constructor of elements in std::array
以下按预期打印“1\n 1\n 1”。我可以以一种打印“2\n 2\n 2”的方式构造 "ar" 而无需为其提供显式初始化列表 (... 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; }();
以下按预期打印“1\n 1\n 1”。我可以以一种打印“2\n 2\n 2”的方式构造 "ar" 而无需为其提供显式初始化列表 (... 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; }();