【发布时间】:2019-08-09 14:42:52
【问题描述】:
void Reverse(vector<int> v)
{
vector<int>::iterator itr1 = v.begin();
vector<int>::reverse_iterator itr2 = v.rbegin();
while(true)
{
swap(*itr1,*itr2);
itr1++;
if(itr1 == itr2.base() - 1) break;
itr2++;
}
}
函数应该反转向量,但它不起作用。 谁能解释一下为什么?
【问题讨论】:
-
“不工作”不是问题描述。
-
阅读您最喜欢的 C++ 书籍中的值传递和引用传递。
-
您正在将副本传递给函数。另外,std::reverse?
-
可能是因为你传递了向量
v按值? -
if(itr1 == itr2.base() - 1) break;不是一个安全的结束条件。它会丢失所有偶数或所有奇数大小的向量,并导致未定义的行为。您也不能将空向量传递给它。
标签: c++