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

stringstreamクラス

ロベールのC++入門講座 08-03文字列をcoutやcinのような扱い方と同じように扱えるようにしたのがstringstreamクラスです。使用例を見てみましょう。 #include <iostream> #include <sstream> using namespace std; int main () { stringstream sstr; sstr.str(""); sstr << "abc</sstream></iostream>…

stringクラスはヌルターミネーターを必要としない

ロベールのC++入門講座 08-01stringクラスはその文字列の長さを自前で管理しているため、ヌルターミネーターを使わなくても問題ない。それどころからヌルターミネーターを一つの文字列として認識することさえ可能である。 #include <iostream> #include <string> using namespa</string></iostream>…

仮想関数テーブル

ロベールのC++入門講座 07-09仮想関数テーブルという内部実装の話。ある仮想関数を呼ぼうとしたときに、実際にどの関数が呼ばれるのかという情報が書き込まれた表のこと。クラスの隠しメンバ変数にその情報を持っているのでクラスのサイズが増える。また仮想…

unique関数

C++

http://www.geocities.jp/ky_webid/cpp/library/021.html連続して重複する値が合った場合、削除してひとつにまとめます。使ってみます。 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main () { vector<int> data; data.push_back(3); data.push_back</int></algorithm></vector></iostream>…

remove関数

C++

http://www.geocities.jp/ky_webid/cpp/library/021.htmlremove関数で値の削除ができます。使ってみます。 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main () { vector<int> data; data.push_back(3); data.push_back(4); data.push_back(5); data</int></algorithm></vector></iostream>…

lower_bound関数とupper_bound関数

C++

http://www.geocities.jp/ky_webid/cpp/library/020.htmlソート済みの配列に値を挿入する場合、例えばpush_back等で追加した後にまたソートしなおさないといけないので冗長です。lower_boundとupper_boundを使えば、値の挿入位置を適切に検出できます。lower…

ファイルの読み書きfstreamクラス

ロベールのC++入門講座 08-04ファイルの読み書きはC言語のときに色々やりましたが、C++ではまだ殆どやってませんでした。当然Cのようにfopen等で同じような実装もできるのですが、折角なのでC++特有のファイルの読み書きの方法を勉強したいと思います。fstre…