STL

ローカルファンクタはgccではfor_eachに指定出来ない。

#include <iostream> #include <vector> #include <algorithm> /* // 関数内じゃなければ、gccでもOK(当たり前だけど)。 struct Proc { void operator () (int val) { std::cout << val << std::endl; } }; */ int main() { // ローカルファンクタクラス struct Proc { void operator ()</algorithm></vector></iostream>…

vectorのコピーよりswapのが早そう。

コピー元のデータ(vector)が壊れてもいい場合(コピー元が一時バッファの様な場合)、 vectorの要素コピーはoperator = ()よりswap()のが早そう。 以下チョーいい加減な検証プログラム。 #include <cstdio> #include <cstdlib> #include <string> #include <vector> typedef std::vector<std::string> Strings</std::string></vector></string></cstdlib></cstdio>…

vectorで表現するstring。

vectorで表現するstringを、vstringと呼んでみるテスト。 typedef std::vector<char> vstring; コレで何がしたいのかと言うと、C文字列を表現したいのです。 ヌル文字で終端するアレ。 何故かと言えばやっぱり、可変長配列だから。 ほとんどの(凡人)プログラマがst</char>…

mapの内部型とか、for_eachする時のファンクタ定義とか。

どれがどの型を指すやらわかりづらいんです。 typedef std::map<int, std::string> Map; Map::key_type key; // キーの型。int。 Map::mapped_type val; // マップされた値の型。std::string。 Map::value_type ele; // 要素(?)型。std::pair<const Map::Key_type, Map::mapped_type>。 // for_each用のファンクタ。 Ma</const></int,>…

multimap

気が付けば年末ですね。 年末でサプライズイベント発生でやや戸惑いました。 ホントに色々あった一年だったな。 multimapってあんまり使うケースが無くて、 馴染みが無かったので一つメモ。 特定のキーに関連づいた要素を列挙するコード。 #include <map> #includ</map>…

std::mapのインデクサとinsert

mapの挙動でメモメモ。typedef std::map Map; Map map;// operator []は要素が無ければ挿入される map["hoge"] = 0; map["fuga"] = 1;printf("hoge=%d\n", map["hoge"]); printf("fuga=%d\n", map["fuga"]); 単純に要素が無ければ挿入する処理を今まで以下の…

TR1ちょっとやってみた@regex

自宅にもVC++9Express入れちゃった。 無料でVC++が使えるなんていい時代になったもんだよなぁ。 ↓のは、簡易な、変数宣言の構文かどうかを調べるプログラム。 全然完全なモノじゃないのであしからず。#include #include using namespace std;bool MatchVarDe…

TR1ちょっとやってみた@type_traits

今日は仕事してないんじゃないかぐらいの勢いでPOSTしてますが。 TR1で遊んでみる事が仕事なのさ。多分。だって職場しかVS2008ないんだもの。 つーことで、以下のは、type_traitsを使ってバッファの破棄処理を スカラー型/非スカラー型で分岐させた自作配列…

TR1ちょっとやってみた@shared_ptrその2

実はboostまともに使った事が無かったんで、 循環参照( ゚Д゚)ハァ?って感じでした。 という事でどっかからサンプル引っ張ってきてやってみた。#include #include // for std::tr1::shared_ptrusing namespace std::tr1;class Hoge { int _val; public: shared_p…

TR1ちょっとやってみた@shared_ptrその1

といってもまだ shared_ptr だけですが。#include #include // for std::tr1::shared_ptrusing namespace std::tr1;class Hoge { int _val; public: Hoge(int val) : _val(val) { std::cout hoge[" } ~Hoge() { std::cout hoge[" } void Say() { std::cout h…