#include <iostream>
#include <vector>
using namespace std;
void factorial(vector<int> ivec, typename vector<int>::iterator iter)
{
vector<int>::iterator it;
for (it = iter; it != ivec.end(); it++)
cout << *it << endl;
}
int main()
{
vector<int> ivec;
for (int i = 1; i < 8; i++)
ivec.push_back(i);
factorial(ivec, ivec.begin());
return 0;
}
在visual studio 2015中显示,
但如果我让 ivec
成为引用类型(vector<int> & ivec
),它将成功运行。
为什么?
代码很糟糕,很糟糕,很糟糕,所以请你只关注问题。
最佳答案
因为迭代器是相对于你从中获取它们的容器的。由于您按值传递 vector ,它就像第二个 vector ,它不会发送以比较来自第一个 vector 的迭代器和来自复制 vector 的迭代器。
关于c++ - 容器作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712034/