我正在寻找一个库/解决方案,以减轻我在程序中遇到的相当重要的缓存未命中次数
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,因此我的共享指针中没有循环。