就像问题所述,我想知道原因。因为当我尝试获取 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
中)。这只是标准中许多细节之一,可能下一个版本会修复它。 - Mike Seymourfirst
和last
必须具有相同的类型,或者可以转换为相同的类型。”方便的是,标准要求vector::iterator
可以转换为vector::const_iterator
。 - Robᵩ