作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
就像问题所说的那样,我想知道其中的原因。因为当我尝试获取 const
和非 const
迭代器之间的距离时出现错误。
vector<int> v;
auto it=v.begin();
auto cit=v.cbegin();
distance(it,cit);
no matching function for call to ‘distance(__gnu_cxx::__normal_iterator<int*, std::vector<int> >&, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >&)
根据我对迭代器的有限理解,我认为它没有理由不工作。
最佳答案
std::distance
调用中有一个可变迭代器和一个常量迭代器,因此模板参数推导失败。您可以通过显式指定模板参数来解决此问题。
std::vector<int> v;
auto i1 = v.begin();
auto i2 = v.cbegin();
auto dist = std::distance<std::vector<int>::const_iterator>( i1, i2 );
关于c++ - 为什么 std::distance 不适用于 const 和非 const 迭代器的混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9622264/
我是一名优秀的程序员,十分优秀!