[英]std::map calls default constructor on [], copy constructor on insert()
我的std :: map稱為統一塊。 當我發現有些奇怪的東西時,我正在測試添加新元素的方法。 當我添加新鍵時,請使用以下方法進行值對:
uniformBlocks["MatrixBlock"] = matrixBlock;
默認構造函數被調用。 但是,當我使用insert時,將調用復制構造函數,這是預期的。
uniformBlocks.insert(
std::pair<const std::string, glWrapper::UBO>("MatrixBlock", matrixBlock)
);
為什么這兩種方法之間存在差異。 他們不是在后台執行相同的方法嗎?
如果對象不存在,則[]
創建一個對象,然后返回對該對象的引用。 當時,沒有可用參數。
=
然后分配給該參考。
insert
不需要這樣做。 它可以使用傳入的對簡單地就位構建。
仔細使用, emplace
甚至可以取消復制或移動ctor調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.