我正在研究c++入门,并且在一个练习中,我必须执行一个将函数打印在 vector 上的递归函数。

我这样做:

void printVector(vector<int>::iterator it1, vector<int>::iterator it2) {
cout << *it1 << " ";
if (it1 != it2-1)
    printVector((it1 + 1), it2);
}

是否有另一种形式来声明它,而没有
if(it1!= ***IT2-1***)

我觉得这是一个平庸的解决方案,因为我找不到其他方法。

谢谢!!

最佳答案

您的函数不应该接受空范围,应该将退出条件置于递归函数的开头:

void printVector(vector<int>::iterator it1, vector<int>::iterator it2)
{
     if( it1 == it2 ) return;
     cout << *it1++ << " ";
     printVector(it1, it2);
}

08-24 18:42