【发布时间】:2018-06-25 10:29:34
【问题描述】:
在 C++ 中,创建一定大小的列表的推荐方法是什么,其中列表的每个元素都是 3 个元素的列表?
类比
为了澄清,Python 中我正在尝试做的类比如下:
最简单的:
n = 10
ls = [[0,0,0] for i in range(n)]
也已经初始化了并且我可以访问元素(例如ls[0][0])甚至修改它们(ls[0][0]=2),完美!
或使用 numpy
import numpy as np
n = 10 #number of elements
ls = np.empty((n,0)).tolist()
然后到每个元素(这里是一个列表),我们将附加我们的 3 个值。
基本尝试
现在我了解了 C++,一个开始的区别是具体定义内部列表应该包含的变量类型。但是vector 不是 C++ 中的变量类型,对吧?类似于以下内容:
int n = 4;
vector<vector> ls(4);
for(int i=0; i<n; i++) {
ls[i] = {0,0,0};
}
会错的。此外,如果我尝试改为vector<int> ls;,那么我无法为每个元素分配列表。
问题:
- 有没有办法在 C++ 中使用
vector使 htis 工作? - 或者,有没有更简单的方法来解决这个问题?
【问题讨论】:
-
您不应该标记 Python,因为您的问题与 Python 无关,即使您将其用作示例。
-
std::vector是一个容器,但它肯定不是一个列表。 -
我会使用
std::vector<std::vector<int>>来做类似的事情。 -
如果内部元素的大小是编译时常数,
std::vector<std::array<int, 3>>可能更可取。 -
@François Andrieux 好点。