gpt4 book ai didi

c++ - 为什么 std::distance 不适用于 const 和非 const 迭代器的混合?

转载 作者:IT老高 更新时间:2023-10-28 22:33:32 25 4
gpt4 key购买 nike

就像问题所说的那样,我想知道其中的原因。因为当我尝试获取 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com