考虑为向量分配对象指针:
std::vector<mapSeg*> mapLayer[3];
是否有可能使这个implmentation成为固定大小的连续对象数组?
是否可以为3 * 64个对象分配一块内存,并将它们正确地放入向量中,如上所述?每个数组代表2D地图上的一层物体(背面,中间,前面),因此对这些层的访问必须是一致的
答案 0 :(得分:0)
这取决于您要保留多少语义。第一步是
std::vector<object> array[3];
现在我们有一个(有效)可变大小存储的3元素数组。
我们还可以包含std::vector<object>
维护三种尺寸,并提供对vector
切片的访问权限。插入其中一个子向量现在变得相当昂贵,因为可能需要复制大量数据,这是std::vector<object> array[3]
版本避免的。迭代器失效属性也会更严格。
这取决于你想做什么。如果您要在三个emplace_back
中的任何一个上重复vector
使用第一个版本,如果按顺序填写它们,请不要删除元素,最后一个版本会提供边际效益。