再帰関数を使用してベクトルの値を出力したいと考えています。
void pvec(int cnt, std::vector<int> vec) {
if(cnt < vec.size()) {
std::cout << vec[cnt++] << std::endl;
return pvec(cnt,vec);
}
}
ベクトル添え字を使用する代わりに、イテレータを使用したかったのです。ただし、最初の引数に反復子を渡し、インクリメントされた反復子で関数を返そうとする同様の関数を作成すると、ループが停止せず、セグメンテーション違反が発生します。どうしてこれなの?
void pvec(std::vector<int>::iterator po, std::vector<int> vec)
{
if(po < vec.end()) {
std::cout << *po++ << std::endl;
return pvec(po,vec);
}
}
po を参照にしようとしましたが、これもうまくいきませんでした。