是否std::set将对象存储在连续内存中std::vector?
我在网上找不到这个,cppreference 没有提到内存分配的细节。但我不明白为什么它不能使用连续内存,因此我的问题。
eer*_*ika 27
std::set 是否将对象存储在像 std::vector 这样的连续内存中?
不能保证它确实如此。同样在实践中,也不能因为容器的要求。因此不,它不会将对象存储在连续内存中。
我不明白为什么它不能使用连续内存
对集合元素的引用在插入和擦除时必须保持有效(对被擦除元素的引用除外)。此要求与连续内存不兼容。
据我所知,平衡搜索树是唯一可以实现std::set.
for*_*818 15
它没有明确排除在外,尽管某些限制std::set使其无法使用连续内存。
例如,set::insert具有对数复杂性,同时vector::insert需要线性复杂性来洗牌其条目。也set::insert不会失效迭代器。使用连续内存无法实现这两个要求。