guoyang9204
2015-06-14 02:31
采纳率: 100%
浏览 1.7k

C++函数模板传形参的问题

想麻烦问问看函数模板的形参到底应该什么时候传递const引用,什么时候使用复制。
例如:
template
void printl(Iterator v1, Iterator v2) //正确的
{
while(v1 != v2){
cout << *v1++ <<endl;
}

}

template
void printl(const Iterator &v1, const Iterator &v2) //错误的
{
while(v1 != v2){
cout << *v1++ <<endl;
}

}

主函数:
int main()
{
vector vec;
vec.push_back(1); vec.push_back(2); vec.push_back(3);
printl(vec.begin(),vec.end());
return 0;
}

为什么这里形参用迭代器的引用会出错呢。谢谢。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2015-06-14 02:36
    最佳回答

    因为你有*v1++,这会修改迭代器,所以const就会报错。

    评论
    解决 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题