ToDo:
http://d.hatena.ne.jp/mowamowa/20070410/1176216368
たぶん ite = が代入か初期化によるかなぁ。
#include <stdio.h>
class Ite {
public:
Ite() : v(0) {}
explicit Ite(int v0) : v(v0) {}
Ite(const Ite& ite) : v(ite.v) {
printf("copy\n");
}
Ite operator=(const Ite& ite) {
printf("subst\n");
v = ite.v;
}
const Ite& operator++() {
v++;
return *this;
}
Ite operator++(int) {
Ite ite(*this);
v++;
return ite;
}
private:
int v;
};
int main() {
Ite ite(1), ite2;
printf("ite++\n");
ite2 = ite++;
printf("++ite\n");
ite2 = ite;
++ite;
{
printf("ite++\n");
Ite ite2 = ite++;
}
{
printf("++ite\n");
Ite ite2 = ite;
++ite;
}
}
ざっくり書いたからちゃんと正しい iterator かどうか自信無いので老後の課題。
i@um ~/test> ./a.out ite++ copy subst ++ite subst ite++ copy ++ite copy
でも結果はまぁ予想通りか。
(01:03)
| 前 | 2007年 4月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | |||||
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。