こんにちは。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でビルドさせるには同様にしたらよいのでしょうか?
ご存じの方がいらっしゃいましたら教えてください。
よろしくお願いします。
vector<T>::iterator の実体が T* だった頃のサンプルじゃないかしら。
うむ
container<T>::iterator(0) という記述は現代 STL では無意味
どう直せばよいかは、どうなって欲しいか次第
iterator は、指す相手がいて何ぼのものなので、上記コードは原理的に無意味
iterator と pointer は概念上はほぼ同値なんだけど、
ヌルポインタに該当する null iterator っつーのはふつー明示しないもんだ
return vector<int>::iterator();
として、引数無しデフォルト初期化した一時オブジェクトのコピーを返す
で、とりあえずコンパイルは通りそう(どのみち意味が無いけどさ)
例外処理っぽいから
vectorのend()でも返しときゃいいんじゃないの。
いや、コードの意図がわからん現時点でそれはあまりに無責任な。
iterator入れてiteratorを返すので探索するような関数かと思いました。
もちろん呼び出し側も変えないとだめだし、引数もそのままだと足りません。
ツイート | ![]() |