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

replacing scoped_array with non-contiguous memory in C++

本文关键字:替换 scoped array 内存 连续 c++      更新时间:2023-10-16

我有一个类似于

的c++类
class Block {
...
scoped_array<Columns> columns_
...
}

现在,据我所知,由于使用数组,列数组的内存将是连续的。

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

我想重构代码,使连续内存不再是一个约束。因此,我假设我必须用不具有传染性的东西替换scoped_array。

然而,如果我可以,我不想重构其他代码,使列_[x]类型访问仍然是可能的。

是否有一个可用的数据结构,我可以在这里使用?我想我可以用c++列表代替它,但这样我就会失去column_ [x]风格的访问。是否有任何数据结构,我可以使用,而不是不需要连续的内存?

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

(基于先前建议deque的注释)