C11特性:std::equal_range、std::lower_bound、std::min_element、获取迭代器在容器中的位置序号、std::distance

1、std::equal_range:
原型:

 template <class ForwardIterator, class T, class Compare> 
 pair<ForwardIterator,ForwardIterator> equal_range (ForwardIterator first, ForwardIterator last, const T& val, Compare comp); 

用法: 在一个已经排序的容器中查找等于指定元素的子序列,返回子序列的首尾迭代器。
使用自定义的compare函数的话,该compare函数或函数对象需要实现<比较运算符,而不是等于。该库用<的原因是:标准库容器常用小于对数据进行排序。
例子:std::equal_range

2、已排序容器中找最大最小边界:

  • std::lower_bound:返回容器中不小于指定元素的迭代器
  • std::upper_bound:返回容器中大于指定元素的迭代器

参考链接:http://www.cplusplus.com/reference/algorithm/lower_bound/

3、查找容器中最大最小值(无需排序):

  • std::min_element:返回容器中最小元素的迭代器
  • std::max_element:返回容器中最大元素的迭代器

参考链接:http://www.cplusplus.com/reference/algorithm/min_element/

4、获取迭代器在容器中的位置序号

  • currIternator - arr.begin(); // 获取当前迭代器在容器中的位置序号,包括0
  • *currIternator; //获取迭代器所指的元素

5、std::distance:计算两个迭代器之间包含的元素个数

// advance example
#include <iostream>     // std::cout
#include <iterator>     // std::distance
#include <list>         // std::list

int main () {
  std::list<int> mylist;
  for (int i=0; i<10; i++) mylist.push_back (i*10);
  std::list<int>::iterator first = mylist.begin();
  std::list<int>::iterator last = mylist.end();
  std::cout << "The distance is: " << std::distance(first,last) << '\n';
  return 0;
}

参考资料:http://www.cplusplus.com/reference/iterator/distance/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值