【发布时间】:2016-02-15 00:50:36
【问题描述】:
您好,我必须创建一个动态二维向量。 作为二维我认为最好不要使用 boost.MultiArray 来提高效率(大于二维的句柄向量的开销)。 我的数据结构必须在运行时更改行维度,而不是列大小是固定的,即为两个。
我是这样想的:
vector<vector<unsigned int> > grid;//declaration
vector<unsigned int> row(2);
grid.push_back(row);//copy vector row and insert in grid
我的问题是: 这是实现我的意图的好方法吗?我认为这是低效的,昂贵的。当我调用 push_back 时会发生什么? 还是有更好的方法我忽略? 而且,是否有可能在声明中指定内部向量的大小为 2? (编译器为c++11)
【问题讨论】:
-
我认为这取决于您的输入。您实际上可以将它视为一个调节器 2D 数组。所以,grid[0].push_back(1);也可以工作。
-
如果大小是固定的,使用
std::array。 -
#AchmadJP 但是当大小超过容量时会发生什么?我觉得有些贵。我可以避免或限制它吗?
-
# T.C.即我应该做 vector
grid ? -
容量实际上是安静的BIG,要检查它,你可以做cout 注意:要回复评论,请用@nick 标记此人 阅读来源:cplusplus.com/reference/vector/vector/max_size