真面目なブログは http://repose.hatenadiary.jp

いつも書く定番の処理というのはあって,例えば string で受け取った特徴量に unique な id を振って管理するために,string の特徴量が key でその id が value になる std::unordered_map _dic に対して

// 特徴量に id を振る処理
int set_feature_id(const string& feature, int feature_id){
  _dic[feature] = feature_id;
}

// 特徴量の id を返す処理
int get_feature_id(const string& feature){
  int feature_id = 0;
  // まだ feature が key として存在しない場合は新しく id を振る
  if(dic.find(feature) == _dic.end()){
    feature_id = _dic.size();
    set_feature_id(feature, feature_id);
  }else{
    feature_id = _dic[feature];
  }

  return feature_id;
}

という処理を毎回毎回飽きるほど書いている気がするので便利クラスを一度作ってそれを使いまわし続けたい.
他にも

  • libsvmフォーマットを parse する汎用的な関数が欲しい
  • unordered_map で std::pair を key にするのをデフォルトで対応して欲しい
    • sparse な二次元配列とか,x_{ij}なんかを持つのに使っている
    • 修論時期に stackoverflow あたりで公開されていたハッシュのコードを使い続けて3年近く経っている

こういう細かい話を色々な人から聞きたい.