我在這里和那里閱讀了一些提示,在將物件插入 c stl 映射后,只要不洗掉它,它在記憶體中的位置就永遠不會改變。但是沒有人提到任何文獻或資料來支持它,所以我不知道這些提示有多可靠。任何人都可以明確/可靠地回答這個問題嗎?它可能依賴于實作嗎?哪里有保證?
uj5u.com熱心網友回復:
C STL Map 在創建后會移動值的位置嗎?
不。
任何人都可以明確/可靠地回答這個問題嗎?
你可以依靠它。
它可能依賴于實作嗎?
它不能依賴于實施。
哪里有保證?
是的,它在 C 標準中得到保證:
[container.rev.reqmts]
除非另有規定(明確地或通過根據其他函式定義函式),呼叫容器成員函式或將容器作為引數傳遞給庫函式不應使該容器內物件的迭代器無效或更改其值.
[associative.reqmts.general]
insert、insert_range 和 emplace 成員不應影響迭代器和對容器的參考的有效性,而擦除成員應僅使迭代器和對被擦除元素的參考無效。
提取成員僅使洗掉元素的迭代器無效;指向已洗掉元素的指標和參考仍然有效。但是,當元素由 node_type 擁有時,通過此類指標和參考訪問元素是未定義的行為。如果元素被成功插入,則在 node_type 擁有時獲得的元素的參考和指標無效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463685.html
上一篇:通過參考傳遞給接受通用參考的函式
下一篇:C 回傳0xC0000005狀態