繁体   English   中英

选择矢量矢量的大小

[英]Selecting size of vector of vectors

我有一个名为Grid的类,它声明了这样的向量向量:

typedef vector<int> row;
typedef vector<row> myMatrix;

myMatrix sudoku_;

构造函数如下所示:

grid::grid() : sudoku_(9,9)
{

}

如您所见,构造函数将其初始化为9x9网格。 如何让它工作,以便要求用户输入一个数字,比如n,并且网格初始化为nxn?

vector有一个构造函数,允许您使用给定值的副本将其初始化为特定大小:

grid::grid(size_t w, size_t h) : sudoku_(w, row(h)) {}

如果可以的话,不要使用矢量。 请改用http://www.boost.org/doc/libs/1_42_0/libs/multi_array/doc/user.html

@gf对这个问题有绝对正确的答案,但我在这里质疑vector的用法(对我来说很少见)。 在数独网格的情况下,结构是固定大小的,因此您不能通过简单的动态分配来获胜。 通过使用9个向量的向量,您有10个填充的向量对象。 其中每个都至少有一个动态分配,所以十个调用new。 最重要的是,关于std :: vector的实现我最熟悉的对象是12个字节(3个32位指针),加上堆分配开销。 所有这些处理一个可以在不到100个字节内轻松表示的结构都是过度的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM