map 和set 有什么区别,分别又是怎么实现的
生活随笔
收集整理的這篇文章主要介紹了
map 和set 有什么区别,分别又是怎么实现的
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
map 和set
- map 和 set 都是 C++的關聯容器,其底層實現都是紅黑樹(RB-Tree)。
- map 和 set 區別在于:
map 和 set 都是 C++的關聯容器,其底層實現都是紅黑樹(RB-Tree)。
由于 map 和 set 所
開放的各種操作接口,RB-tree 也都提供了,所以幾乎所有的 map 和 set 的操作行為,都只是
轉調 RB-tree 的操作行為。
map 和 set 區別在于:
(1)map 中的元素是 key-value(關鍵字—值)對:關鍵字起到索引的作用,值則表示與索
引相關聯的數據;Set 與之相對就是關鍵字的簡單集合,set 中每個元素只包含一個關鍵字。
(2)set 的迭代器是 const 的,不允許修改元素的值;map 允許修改 value,但不允許修改
key。其原因是因為 map 和 set 是根據關鍵字排序來保證其有序性的,如果允許修改 key 的話,
那么首先需要刪除該鍵,然后調節平衡,再插入修改后的鍵值,調節平衡,如此一來,嚴重破壞
了 map 和 set 的結構,導致 iterator 失效&#x
總結
以上是生活随笔為你收集整理的map 和set 有什么区别,分别又是怎么实现的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一手股票多少股
- 下一篇: 智能指针 shared_ptr 的实现(