2011-10-27 5 views
8

私は、コンテナ(マップ、ベクトル、リスト、...)にどのように変更可能かを知りたい。さらに、私は何を覚えておく必要がありますか?C++コンテナのパフォーマンスに対する可変キーワードにはどのような影響がありますか?

+0

一般的に、可変キーワードに関する書籍を書く人は、特定のケースで何が表示されているのかを示すコードを付けて、絞り込むことができます。 – PlasmaHH

答えて

10

mutableは、constのように、コンパイル時のものです。それはあなたが一定のコンテキストでその変数を変更することを許可します。実行時に、コンテナを宣言しても差はありませんmutable

class Foo{ 
    mutable int i; 

public: 
    void foo() const{ 
    // constant context, but you can modify `i` 
    i = 5; 
    } 
}; 
+2

また、オプティマイザのヒントとして使用することもできます。 – Dani

+2

オプティマイザの処理に影響します。 –

+1

不変なオブジェクト(最も広い意味で)に対してできる最適化の機会は(少なくとも理論上は)存在します。これは、 '変更可能な'メンバを持つ 'const'オブジェクトに適用されるとコードが壊れる可能性があります。しかし、私はコンパイラの実装がどれだけ実装されているかを知るために十分に精通していません。それでも問題は正当な理由で有効です。 – bitmask

関連する問題