我希望有一个二维数据结构来存储SAT公式。我想要的是类似于二维数组。但我希望做动态内存分配。
我正在考虑以下形式的向量数组: -
typedef vector<int> intVector;
intVector *clause;
clause = new intVector [numClause + 1] ;
因此clause[0]
将是一个向量,clause[1]
将是另一个向量,依此类推。并且每个向量可以具有不同的大小。但我不确定在内存分配方面这是否正确。
可以制作一组矢量,以便矢量具有不同的大小吗?内存管理有多糟糕?
感谢。
答案 0 :(得分:1)
使用STL(动态内存分配)可以很好地进行内存管理,性能会下降,因为它是动态的,不会直接访问。
如果你完全绝望,你可以使用一对矢量,第一个作为静态数组,第二个是使用元素的数量。如果某个数组变大,您可以重新分配更多内存并增加计数。这将是一个很大的混乱,但可能会奏效。你将失去更少的内存并直接进入第二级阵列,但是它很丑陋。