这样做,无需重复提及A
:
array<std::vector<A>, 3> v{{ {1}, {2,3,4}, {} }};
如果构造函数采用两个参数,您可以将它们写在大括号内:
array<std::vector<A2>, 3> v2{{ {{1,2}}, {{2,3},{4,5},{8,9}}, {} }};
我可能更喜欢下面的语法,如果构造函数是显式的,它也可以工作。
std::array<std::vector<A2>, 3> v2{{ {A2{1,2}}, {A2{2,3},A2{4,5},A2{8,9}}, {} }};
完整示例:
#include <array>
#include <vector>
#include <iostream>
struct A2 {
A2(int k,int j) : mk(k),mj(j) {}
int mk;
int mj;
};
int main (){
std::array<std::vector<A2>, 3> v2{{ {{1,2}}, {{2,3},{4,5},{8,9}}, {} }};
int i=0;
for (auto &a : v2){
std::cout << "... " << i++ <<std::endl;
for (auto &b : a){
std::cout << b.mk << " " <<b.mj <<std::endl;
}
}
}