2015年33週目まとめ

tmux-change-pane作った

swap-paneは機能としてはとても便利なのですが、
ショートカットからの切り替え時に画面全てを切り替えてしまい、
とても使いづらかったので現在のパネル上で切り替える版を作りました。
tmux-change-pane

いずれちゃんと記事を書く予定です…

C++03だとmapのatが無い

std::mapの[]は値が無い場合、その値を作ってしまうためconstではありません。
http://www.cplusplus.com/reference/map/map/operator[]/

そのため、以下のように配列内の要素を参照する場合、たとえ100%あることがわかっていても、constにすることは出来ません。

void printName(int unique_id, const std::map<int, std::string> &uniqueIdToName) {
  printf("%s\n", uniqueIdToName[unique_id].c_str());
}

そのため、以下のようにfindして要素を取り出す必要があります。

void printName(int unique_id, const std::map<int, std::string> &uniqueIdToName) {
  std::map<int, std::string>::const_iterator it = uniqueIdToName.find(unique_id);
  printf("%s\n", it->second.c_str());
}

C++11からだとconstでも使えるatメソッドが用意されているため、これを利用することで、以下のようにかなりすっきりと書くことができます。

void printName(int unique_id, const std::map<int, std::string> &uniqueIdToName) {
  printf("%s\n", uniqueIdToName.at(unique_id).c_str());
}