2016-05-06 6 views
-1

unordered_mapを私のアプリケーションに追加して、値を<string,object>のペアとして保存します。関数内でマップする要素を追加し、このオブジェクトへのポインタを返し、いくつかのロジックを行い、後でこの値を取得したかったのです。[]とinsert()でstd :: unordered_mapへの挿入の違い

残念ながら、私の参照が何らかの接続を失っているように見えるため、残念ながら私は計画どおりにできません。これは、挿入は、現在行われている方法です。

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についても考えていますが、違いについてはわかりません。演算子の良いことは、オブジェクトが存在するかどうかは関係ありませんが、まだそれを参照することができます。しかし、明らかに私はこのオブジェクトでは何もできません。この場合、何が良いでしょうか?

答えて

3

私の参照は、あなたが参照を使用していない何とか接続

を失うているように見えます。あなたはそのコピーを作っている:あなたが参照を使用したい場合は、edgeはタイプEdgeS &を持っている必要があり

EdgeS edge = edges[to->name]; 

+0

これは意味があります。私はそれを見ませんでした。その点をご指摘いただきありがとうございます。 – sebap123

関連する問題