結論としては、vectorとかmapとかの、初歩的なコンテナをいじいじした話
コンテナとは?
~ 同じ型のオブジェクトの集まりを表現するクラス。
Cで言う、配列と構造体を合わせて、かつオブジェクト指向に対応させたもの。
で、今日主に使ったのが、vectorコンテナとmapコンテナ。
以下のサイトを参考にしました。
イテレータの生成と使い方が分かれば、OKなのかも。
ハマった所としては、
と初期化すると、hogeがvectorに与えられた型によって、値を持つから注意。
上のint型だと、各vectorの要素が0を持つので、push_backとかすると悲惨になる。
動的配列なので、配列と違って初期化とか考えず使うのがベストかも。
mapは、key値にソート(比較)できる型じゃないとエラーを吐く。
後、文字列のsplitが分からなかったので、以下のコードを利用した。
C++で文字列のsplit | Story of Your Life
このうち、
std::vector<std::string> split(const std::string &str, char delim){
std::istringstream iss(str); std::string tmp; std::vector<std::string> res;
while(getline(iss, tmp, delim)) res.push_back(tmp);
return res;
}
を利用させて貰いました。
まるで動作がわからないけど・・・
次は、boost_pythonを利用して、pythonの拡張ライブラリをc++で書く。
*追記
mapのvalueにコンテナを入れる時のハマりどころ
○ std::map<int, vector<int> > hoge;
× std::map<int, vector<int>> hoge;
理由は、std::coutに利用される<< や >>と区別をつけるため。
知らないでいると、辛い。
あと、std::set<int>について
ぶっちゃけ、集合演算がめんどい・・・