微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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链接

原文地址:https://www.jb51.cc/c/117181.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐