トップ «前の日記(2007-04-10) 最新 次の日記(2007-04-12)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|

ToDo:


2007-04-11

_ ぜんちこうち

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)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

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
1.shinh(2007-04-28 18:51) 2.Gus(2007-04-28 15:03) 3.shinh(2007-04-27 13:25)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h