c++ 使用对象指针作为std::unordered_map中的值有什么好处?

ruyhziif  于 2023-03-14  发布在  其他
关注(0)|答案(1)|浏览(200)

在youtube剪辑Trading at light speed: designing low latency systems in C++ - David Gross - Meeting C++ 2022中,呈现了以下内容:

std::unordered_map<InstrumentId, Instrument> mInstruments;
// Upsides: Contiguous memory, cheap lookup
// Downsides: Random memory access ("Linked list")

std::vector<Instrument> mInstruments;
std::unordered_map<InstrumentId, Instrument*> mInstruments;
// Upsides: Contiguous memory, cheap lookup
// Downsides: expensive resize which invalidates pointers

为什么这是一个改进?不是还有一个链表,只是现在用指针代替了完整的对象吗?所以你仍然有随机内存访问?

798qvoo8

798qvoo81#

第二种设计允许您使用for(Instrument &i : mInstruments)在连续排序内存中的所有乐器上循环。

相关问题