ぼく用あれこれまとめ
STL使ってる?
最終更新:
bokuyo
-
view
STL使ってる?
- やべぇ、このページ。見返してみたら思った以上に、不正確(2012/11/08 現在)
STL使おうぜ。
- C++を使ってるのに、Cライクな書き方しかできないなんてそんなのC++を使ってるとは言えないよ。
- ってことで、C++使ってる感を出すためにみんなもSTL使ってね。
- google先生で調べればすぐに使い方からなにまでがでてくるので詳しい使い方をここにまとめる気はないの。
- 使ってて思ったこととかまとめるよ。
std::vector
#include <iostream> #include <vector> int main() { std::vector<int> eureka(7); //int eureka[7]; eureka[1] = 156; //普通の配列みたく使えるよん eureka.at(2) = 256; //こんな書き方もできるよ。 //eurekaのサイズ(=7)が表示されるよ。 std::cout << eureka.size() << std::endl; std::vector<int>::iterator renton; //int* renton; renton = eureka.begin(); //renton = eureka; ++renton; //++renton; //156が表示されるよ。 std::cout << *renton << std::endl; return 0; }
std::set
- 二分木。木構造。集合
- 同じ要素を入れることはできない。
- 同じ要素を入れたければ、std::multisetを使うといいよ。
- find関数のあるリストと考えてもいいかも。
std::map
- map::insert()の引数はちょっと面倒な書き方になる。
- 配列みたくかけるから便利。
std::vector VS std::list
- 実際に計ったよ。計算量とか計算できない系プログラマなんで実測万歳。
std::vector vs std::list | |
push_back() | vectorのほうが速い. listは末尾挿入にvectorの1.25倍の時間がかかる. |
random access vs iterator | listにiteratorでアクセスするより、vectorの要素にランダムアクセスしたほうが0.98倍速かった. |
iterator | for文回してiteratorでアクセスも、listよりvectorのほうが速かった. |
真偽不明な話
std::vector
- 要素を取り出すことが強い
- ランダムアクセスに強い
- ポインタ型を格納したほうがいい
std::list
- 要素の追加・削除に強い
- ただし、std::vectorに比べ、末尾への挿入が異様に遅い??
.