首页 > 解决方案 > 您可以在 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 示例中,一个未命名的新数组列表对象。我确定它有一个术语,但我不知道它是什么,所以我无法在谷歌上搜索它。

标签: c++

解决方案


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

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

上面的代码在功能上是等价的,std::vector<int>my_vector;因为 C++ 会自动调用构造函数。C++ 这样做的原因是因为 C++ 没有null类型,不像 Java。

所以这变成:

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

PS。

Java 对象 = C++ 指针。C++ 指针有值,nullptr或者0,Java 对象有默认值null

编辑:Nico Schertler 有一个有趣的解决方案,你也应该看看。我不会将它们包含在我的答案中,因此如果他愿意,他可以从中做出答案,但请查看他的评论。


推荐阅读