以下将按预期打印“ 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] 删除。
我来说两句