iterator(0) とは ?


たるたる  2008-03-26 03:24:56  No: 67893

こんにちは。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-26 04:53:14  No: 67894

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


tetrapod  2008-03-26 17:38:17  No: 67895

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

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

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


そだ  2008-03-26 19:25:06  No: 67896

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


επιστημη  URL  2008-03-26 20:10:42  No: 67897

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


そだ  2008-03-26 20:45:36  No: 67898

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加