您可以在C ++中匿名填充向量的向量吗?

时间:2019-06-19 01:20:32

标签: c++

在C ++中,我想制作一个向量向量,每个向量都包含整数。目前,我必须做类似的事情

std::vector<std::vector<int>> vectors;
std::vector<int> v1;
std::vector<int> v2;

然后

vectors.push_back(v1);
vectors.push_back(v2);

在Java中,您可以跳过声明v1和v2的步骤,只需初始化包含其他矢量的矢量,然后进行循环或仅执行此操作

myArrayList.add(new ArrayList<int>());

可以用C ++做到吗?如果是这样,怎么办?谢谢

编辑:此外,当您添加匿名/未命名对象时,这叫什么?我用术语“匿名”来指代未命名的向量,或者在Java示例中,是指未命名的新arraylist对象。我确定有一个术语,但是我不知道它是什么,所以我无法在Google上搜索它。

1 个答案:

答案 0 :(得分:0)

您所说的是一个没有变量的对象 在Java中,我们使用new ArrayList<Integer>()。 在C ++中,我们使用std::vector<int>()。 这行得通,因为在C ++中,理论上我们可以说

std::vector<int> my_vector = std::vector<int>();

上面的代码在功能上等效于std::vector<int>my_vector;,因为C ++自动调用构造函数。 C ++之所以这样做,是因为与Java不同,C ++没有null类型。

所以它变成:

vectors.push_back(std::vector<int>());

PS。

Java对象= C ++指针。 C ++指针的值为nullptr0,Java对象的默认值为null

编辑: Nico Schertler有一个有趣的解决方案,您也应该看看。我不会将它们包括在我的答案中,因此他可以根据需要从中做出答案,但是请看一下他的评论。