iterator(0) とは ?


たるたる  2008-03-25 18:24:56  No: 67893  IP: 192.*.*.*

こんにちは。VisualStudio2003のサンプルコードを2008でビルドしようと
したのですが、

(↓簡略しました)
vector< int >::iterator test( vector< int >::iterator i )
{
    return vector< int >::iterator(0) ;
}

のようなコードが書かれていてビルドできません。STLを上記のように
使ったことがないので、vector< int >::iterator(0)がどのような意味を
してしているのかわかりません。

vector< int >::iterator(0)はどのような意味でしょうか ?
また、VisualStudioでビルドさせるには同様にしたらよいのでしょうか?

ご存じの方がいらっしゃいましたら教えてください。
よろしくお願いします。

編集 削除
επιστημη  URL  2008-03-25 19:53:14  No: 67894  IP: 192.*.*.*

vector<T>::iterator の実体が T* だった頃のサンプルじゃないかしら。

編集 削除
tetrapod  2008-03-26 08:38:17  No: 67895  IP: 192.*.*.*

うむ
container<T>::iterator(0) という記述は現代 STL では無意味
どう直せばよいかは、どうなって欲しいか次第

iterator は、指す相手がいて何ぼのものなので、上記コードは原理的に無意味
iterator と pointer は概念上はほぼ同値なんだけど、
ヌルポインタに該当する null iterator っつーのはふつー明示しないもんだ

return vector<int>::iterator();
として、引数無しデフォルト初期化した一時オブジェクトのコピーを返す
で、とりあえずコンパイルは通りそう(どのみち意味が無いけどさ)

編集 削除
そだ  2008-03-26 10:25:06  No: 67896  IP: 192.*.*.*

例外処理っぽいから
vectorのend()でも返しときゃいいんじゃないの。

編集 削除
επιστημη  URL  2008-03-26 11:10:42  No: 67897  IP: 192.*.*.*

いや、コードの意図がわからん現時点でそれはあまりに無責任な。

編集 削除
そだ  2008-03-26 11:45:36  No: 67898  IP: 192.*.*.*

iterator入れてiteratorを返すので探索するような関数かと思いました。
もちろん呼び出し側も変えないとだめだし、引数もそのままだと足りません。

編集 削除