[英]What is the difference in insertion to std::unordered_map with [] and insert()
我想將unordered_map
添加到我的應用中以將值存儲為<string,object>
對。 我想添加元素以映射到函數中,返回指向該對象的指針,執行一些邏輯,然后再檢索此值。
不幸的是,我無法按計划進行,因為我的參考似乎失去了某種聯系。 當前是這樣完成插入的:
std::unordered_map<std::string, EdgeS> edges;
// Some extra stuff
EdgeS* Node::insertEdge(Node* to)
{
EdgeS edge = edges[to->name];
if(!edge.to)
edge.to = to;
edge.frequency++;
edge.packets_number++;
return &edge;
}
如您所見,我正在使用operator [] ,但是稍后我嘗試使用此地圖的對象時,看起來好像已重新創建它,而我對此所做的一切都沒有效果。
我也一直在考慮insert ,但是我不確定差異。 使用運算符的好處是,對象是否存在無關緊要,我仍然可以引用它。 但是顯然我不能用這個對象做任何事情。 那么在這種情況下哪個更好?
看來我的參考資料以某種方式失去了聯系
您沒有使用參考。 您正在復制:
EdgeS edge = edges[to->name];
如果要使用參考, edge
類型應為EdgeS &
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.