c++ - 您可以在 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 示例中,一个未命名的新数组列表对象。我确定它有一个术语,但我不知道它是什么,所以我无法在谷歌上搜索它。
解决方案
你在说的是一个没有变量的对象在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 有一个有趣的解决方案,你也应该看看。我不会将它们包含在我的答案中,因此如果他愿意,他可以从中做出答案,但请查看他的评论。
推荐阅读
- css - 我在 highcharts 标题上的 css 工具提示不起作用
- java - 如何通过 Kotlin Gradle 和 -D 为我的测试提供系统属性
- javascript - 在 Javascript 端保存处理程序之前计算 vTiger 字段(内部代码)
- reactjs - 过多的项目渲染
- javascript - 角度材质 - 对材质表进行排序后,动画过渡开始状态未更新
- unity3d - 在 Unity 的多选下拉菜单中显示 ScriptableObjects
- reactjs - 传递参数 onClick, React
- android - 唯一约束失败:type.ps
- yii2 - Yii2 使用 ajax 提交模态表单
- java - 在 jooq 3.11.11 试用版的 META-INF/maven/plugin.xml 中找不到插件描述符