iterator(0) とは ?


たるたる  2008-03-25 18: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-25 19:53:14  No: 67894

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


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

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

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

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


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

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


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

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


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

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


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

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







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