gpt4 book ai didi

c++ - 在 STL vector 数组中初始化类

转载 作者:行者123 更新时间:2023-11-30 04:23:52 24 4
gpt4 key购买 nike

我想知道是否可以在单个“行”中的 vector 数组中初始化一堆类。

class A {
public:
A(int k) {...}
};

[...]

#include <array>
#include <vector>
using namespace std;

array<vector<A>, 3> = { { A(5), A(6) }, { A(1), A(2), A(3) }, { } };

如您所想,此解决方案行不通(否则我不会在这里!)。最快的方法是什么?

最佳答案

这样就可以了,无需重复提及 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;
}
}
}

关于c++ - 在 STL vector 数组中初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com