我正在寻找一个库/解决方案,以减轻我在程序中遇到的相当重要的缓存未命中次数
class Foo{
std::vector<Foo*> myVec;
// Rest of the class
};
int main(){
// Some code
std::vector<Foo*> myVecOfFoo;
}
所以,我做的第一件事就是创建一个指向这个向量的std::vector<Foo>
每一个点。Foo*
它有很大帮助。我的主要问题是std::vector<Foo*> myVec;
. 这些向量的每个内部数组都位于内存的不同部分。就像我创建一个单一的一样,我的std::vector<Foo>
所有Foo
在内存中都是连续的,我希望我的所有都在内存std::vector<Foo*> myVec;
中对齐(实际上是内部数组)。如何?
注意:重要的一点myVec
是Foo
. 否则,我可以轻松地构建一个单一的std::vector<Foo*>
并编写 getter/setter。另外,我std::shared_ptr<Foo>
不是Foo*
因为我不是野蛮人,而是因为它使示例的理解更容易。最后,我保证所有权形成一个 DAG,因此我的共享指针中没有循环。