是否std::set
将对象存储在连续内存中std::vector
?
我一直无法在网上找到它,cppreference并未提及有关内存分配的详细信息。但是我看不到为什么它不能使用连续内存,因此我提出了问题。
性能:对于您的用例,您需要进行衡量(取决于您的哈希函数),请参阅:channel9.msdn.com/Events/Build/2014/2-661 from 45:48
—
Richard Critten
另请参见boost :: flat_set。
—
卡雷斯
您是说“连续的”,如“迭代集合时,对象存储在连续的内存位置中”,还是“所有的对象都存储在一大块内存中(但以任意顺序)”?
—
Pablo H
通常,当您问“容器A是否与容器B相同”时,答案是“否”,否则只会存在容器A(因为拥有容器B的目的是什么?)。当然,这不适用于容器适配器,但
—
在轨道进行的轻度比赛
std::set
不是其中之一,这是关键。
set::insert
要求:en.cppreference.com/w/cpp/container/set/insert “ ...没有迭代器或引用无效....”,因此当它需要像扩展时一样无法重新分配std::vector
。