用C ++中的非连续内存替换scoped_array

时间:2013-06-06 15:15:23

标签: c++ memory-management boost shared-ptr

我有一个类似

的C ++类
class Block {

...

scoped_array<Columns> columns_

...
}

现在我理解因为使用数组,Columns数组的内存将是连续的。

代码的几个部分随机访问该数组的元素,即columns_ [x]。

我想重新考虑代码,以便连续的内存不再是约束。因此,我假设我必须用不具传染性的东西替换scoped_array。

但是如果我可以不想重新考虑其他代码,那么仍然可以进行columns_ [x]类型的访问。

我可以在这里使用可用的数据结构吗?我想我可以用C ++列表替换它,但之后我将失去columns_ [x]样式访问。我可以使用boost中的任何数据结构,而不需要连续的内存吗?

1 个答案:

答案 0 :(得分:0)

std :: deque提供了与向量几乎相同的方法,但没有限制在内存中保持数据连续。

(基于早先的评论暗示deque)