STLコンテナのconstメンバー関数
3回くらい調べてしまったのでメモ。
STLのコンテナをメンバー変数にもって、constメンバー関数を実装するときに、検索系の関数はconstがあるものと無いものを使い分けないとダメ。
言葉で書くと意味不明ですけど、要はこういうことです。
#include<map> using namespace std; struct Foo { map<int,int> m; int get(int a) const { return m[a]; // エラー } };
これを防ぐためには、当たり前ですがmap
で提供されているconst
なメンバ関数を使います。
#include<map> using namespace std; struct Foo { map<int,int> m; int get(int n) const { return m.find(m)->second; } };