2012-12-07 33 views

回答

4

向量中的項必須是可複製構造的或(如C++ 11)move-constructible。

地圖中的關鍵只需要破壞,而不是複製/移動可構造,所以在這方面的要求比較鬆散。

至於爲什麼這是非常簡單的:當/如果一個向量被調整大小,現有緩衝區中的數據必須被複制或移動到新的緩衝區中。相比之下,地圖通常將其內容作爲節點存儲在樹中。一旦創建了一個節點,它就會一直存在直到它被銷燬。雖然樹有時需要平衡,但只需要操作節點之間的指針 - 在創建節點之後,節點中的密鑰永遠不會被修改。

0

您需要能夠爲存儲在STL容器中的項目插入副本,這就是爲什麼它不被允許。

您仍然可以使用const引用來通過類方法(getter)通過const_iterator將容器導出爲只讀訪問。

相關問題