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/