阅读代码的时候遇到了这个函数,大致知道意思是返回两个元素之间的距离,网上找了一些资料在这里做一个总结,方便自己记忆。
C++中的详细定义
- distance( )函数
详细的定义可以参考如下代码:
1 2 3 4 5 | function template <iterator> template<class InputIterator> typename iterator_traits<InputIterator>::difference_type distance (InputIterator first, InputIterator last); |
作用是:返回两个迭代器之间的距离,也可以理解为计算两个元素 first 和 last 之间的元素数。
注意:如果说 InputIterator 不是一个正向迭代器,那么元素 first 以及如何从它的值获得的引用、迭代器以及指针都可能是无效的。
- 下面通过一个具体的实例让大家可以更好的了解 distance( )函数的作用。
定义两个set分别为 sub 和 sup,计算两者相同元素分别与sup首元素之间的距离,返回结果 {1,3,4}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* * compute_distance( {1, 3, 6}, {0, 1, 2, 3, 6, 7} ) = {1, 3, 4} */ std::vector<uint8_t> compute_distance( std::set<int> const& sub, std::set<int> const& sup ) const { std::vector<uint8_t> support; support.reserve( sub.size() ); auto itp = sup.begin(); for ( auto i : sub ) { itp = std::find( itp, sup.end(), i ); support.push_back( static_cast<uint8_t>( std::distance( sup.begin(), itp ) ) ); } return support; } |