簡體   English   中英

使用[]和insert()插入std :: unordered_map有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM