2009-08-14から1日間の記事一覧

イテレータで複数分先に進める(or戻る)方法

C++

通常イテレータでは++演算子を用いて一つ進めたりすることができます。 vector<int>::iterator it = data.begin(); // ひとつ進める ++it; では二つ以上進めたい場合どうするか? // 二つ進める ++it; ++it; とすればできますよね、当たり前の話です。でもこれが5</int>…

イテレータに関するあれこれ

C++

http://www.geocities.jp/ky_webid/cpp/library/012.htmllistやsetやmap等で使ってきたイテレータのことを双方向イテレータと言います。++演算子や--演算子で双方向に移動ができるからです。さらにこれに加えて[]演算子での直接アクセスできるvectorやdeque…

pairクラス

C++

http://www.geocities.jp/ky_webid/cpp/library/011.html pairは、2つの値をペアにして1つとして扱うためのクラスです。 前章のmapでは、キーと値をペアで扱う必要がありました。正にこのような用途で使うものです。前章のmapで、insertするとき、value_ty…

mapクラスでキー名でアクセス

C++

http://www.geocities.jp/ky_webid/cpp/library/010.htmlmapクラスの続きです。mapクラスはツリー構造なので直接アクセスすることは通常出来ないのですが、キー名でアクセスすることはできるのでそれが[]演算子に割り当てられいます。ということで使ってみま…

mapクラス

C++

http://www.geocities.jp/ky_webid/cpp/library/010.htmlmapクラスとはキーと値の組み合わせでデータを管理するためのクラスで、ちょうどハッシュテーブルの仕組みに似ているかもしれないものです。ただし内部のデータ構造としてはツリー構造らしいので、挙…

逆順のイテレータ

C++

さて今までvector、list、set等色々なコンテナの勉強をしてきたわけですが、全ての値にアクセスする手段としてイテレータを使ってきました。このイテレータなんですが、実は逆順でループさせることも可能なのです。さっそくやってみます。例としてvectorクラ…

multisetクラス

C++

http://www.geocities.jp/ky_webid/cpp/library/009.html前回のsetクラスと殆ど同じです。setクラスは、同じ値を格納できませんでしたが、multisetクラスの場合は同じ値であっても格納できるようになります。まずはsetクラスで同値の格納を行った場合どうな…

setクラス

C++

http://www.geocities.jp/ky_webid/cpp/library/009.htmlsetクラスとは、自動的に要素のソートを行ってくれるコンテナです。さっそく実装してみます。 #include <iostream> #include <set> using namespace std; int main () { set<int> data; data.insert(5); data.insert(3); d</int></set></iostream>…

bitsetクラスを自作する

C++

昨日勉強したbitsetクラスですが、題材としてとても面白そうだと思ったので自作してみることにしました。テンプレートクラスとビット演算に慣れるという意味でもちょうど良いと思います。 #include <iostream> #include <string> using namespace std; template<unsigned long SIZE> class mybitset</unsigned></string></iostream>…

listクラスでソートせずにリスト同士の連結

C++

前にlistクラスのmerge関数でリスト同士の連結をする方法を勉強しました。listクラスでリスト同士の連結 - (void*)Pないとですがmerge関数だと元のデータがソートされていた場合、連結後のデータも勝手にソートしてしまいます。ソートをせずに連結する方法を…