c – STL迭代器std :: distance()错误

我有两个typedef:
typedef std::vector<int> Container;
typedef std::vector<int>::const_iterator Iter;

在我考虑的问题中,我对Container Input执行了一些操作,之后我想计算std :: distance(Input.begin(),itTarget),其中itTarget属于Iter类型.但是我得到这个编译错误,没有函数模板“std :: distance”的实例匹配参数列表,并且只有在转换后,即std :: distance(static_cast< Iter>(Input.begin()),itTarget一切正常.

我想知道为什么会这样?

解决方法

std::distance是模板函数,它不能接受不同的参数.
你需要使用:
std::distance(Input.cbegin(),itTarget);
                    ^^

std::vector::cbegin链接

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...