泛型算法:
1.find(开始索引,结束索引,查找值)。
2.copy(开始索引,结束索引,back_inserter(容器))。back_inserter成为iterator的适配器:它使得元素被插入到作为实参的vector的尾部。
3.sort(开始索引,结束索引)。
4.unique(开始索引,结束索引)。只是去掉相邻元素的重复值。操作后容器的长度不会变,返回一个iterator指向废弃部分的开始出。例如:01123211经过 sort()变成01111223在经过unique()变成01231223。其中1223就是废弃部分,返回的iterator指向废弃部分的1。
5.stable_sort(开始索引,结束索引,函数对象)。
6.count_if(开始索引,结束索引,函数对象)。函数对象的返回值为True才能使用泛型算法。
7.remove()
8.for_each()把函数指针或是函数对象应用在由一对iterator标记的容器的每个元素上。
9.list::merge()。merger要求两个list都需要已序。
排序算法:
对所有元素排序:
void sort(RandomAccessIterator beg, RandomAccessIterator end )
void sort(RandomAccessIterator beg, RandomAccessIterator end, BinaryPredicate op)
void stable_sort(RandomAccessIterator beg, RandomAccessIterator end )
void stable_sort(RandomAccessIterator beg, RandomAccessIterator end, BinaryPredicate op)
局部排序:
void partial_sort(RandomAccessIterator beg, RandomAccessIterator sortend, RandomAccessIterator end)
void partial_sort(RandomAccessIterator beg, RandomAccessIterator sortend, RandomAccessIterator end, BinaryPredicate op)
RandomAccessIterator patrial_sort_copy(InputIterator sourceBeg, InputIterator sourceEnd, RandomAccessIterator destBeg,
RandomAccessIterator destEnd)
RandomAccessIterator patrial_sort_copy(InputIterator sourceBeg, InputIterator sourceEnd, RandomAccessIterator destBeg,
RandomAccessIterator destEnd, BinaryPredicate op )
根据第n个元素排序:
void nth_element(RandomAccessIterator beg, RandomAccessIterator nth, RandomAccessIterator end)
void nth_element(RandomAccessIterator beg, RandomAccessIterator nth, RandomAccessIterator end, BinaryPredicate op)
Heap算法:
make_heap()
push_heap()
pop_heap()
sort_heap()
已序区间算法:
搜寻元素:
检查某个元素是否存在:
bool binary_search(FordwardIterator beg, ForwardIterator end, const T& value)
bool binary_search(FordwardIterator beg, ForwardIterator end, const T& value, BinaryPredicate op)
检查若干个元素是否存在:
bool includes(InputIterator1 beg, InputIterator1 end, InputIterator2 searchBeg, InputIterator2 searchEnd)
bool includes(InputIterator1 beg, InputIterator1 end, InputIterator2 searchBeg, InputIterator2 searchEnd, BinaryPredicate op)
搜寻第一个或最后一个可能位置:
FordwardIterator lower_bound(FordwardIterator beg, ForwardIterator end, const T& value)
FordwardIterator lower_bound(FordwardIterator beg, ForwardIterator end, const T& value, BinaryPredicate op)
FordwardIterator upper_bound(FordwardIterator beg, ForwardIterator end, const T& value)
FordwardIterator upper_bound(FordwardIterator beg, ForwardIterator end, const T& value, BinaryPredicate op)
搜寻第一个和最后一个可能位置:
pair
equal_range(FordwardIterator beg, FordwardIterator end, const T&value)
pair
equal_range(FordwardIterator beg, FordwardIterator end, const T&value, BinaryPredicate op)
Tips:
1.内置数组不支持erase()操作,所以unique()算法不太适合于内置数组类型。
2. 关联容器,如map,set,在内部维护元素的排序关系,以便允许快速查找或获取。因此不允许在关联容器上应用重新排序的泛型算法,如:sort()或 partition(),如果重新排序关联容器中的元素,我们必须先把它拷贝到顺序容器中,如vector或list。
3.list容器时一个双向链表,不支持随即存储,所以merge(),remove(),reserves(),sort(),unique(),最好不要应用于list对象上。
1.find(开始索引,结束索引,查找值)。
2.copy(开始索引,结束索引,back_inserter(容器))。back_inserter成为iterator的适配器:它使得元素被插入到作为实参的vector的尾部。
3.sort(开始索引,结束索引)。
4.unique(开始索引,结束索引)。只是去掉相邻元素的重复值。操作后容器的长度不会变,返回一个iterator指向废弃部分的开始出。例如:01123211经过 sort()变成01111223在经过unique()变成01231223。其中1223就是废弃部分,返回的iterator指向废弃部分的1。
5.stable_sort(开始索引,结束索引,函数对象)。
6.count_if(开始索引,结束索引,函数对象)。函数对象的返回值为True才能使用泛型算法。
7.remove()
8.for_each()把函数指针或是函数对象应用在由一对iterator标记的容器的每个元素上。
9.list::merge()。merger要求两个list都需要已序。
排序算法:
对所有元素排序:
void sort(RandomAccessIterator beg, RandomAccessIterator end )
void sort(RandomAccessIterator beg, RandomAccessIterator end, BinaryPredicate op)
void stable_sort(RandomAccessIterator beg, RandomAccessIterator end )
void stable_sort(RandomAccessIterator beg, RandomAccessIterator end, BinaryPredicate op)
局部排序:
void partial_sort(RandomAccessIterator beg, RandomAccessIterator sortend, RandomAccessIterator end)
void partial_sort(RandomAccessIterator beg, RandomAccessIterator sortend, RandomAccessIterator end, BinaryPredicate op)
RandomAccessIterator patrial_sort_copy(InputIterator sourceBeg, InputIterator sourceEnd, RandomAccessIterator destBeg,
RandomAccessIterator destEnd)
RandomAccessIterator patrial_sort_copy(InputIterator sourceBeg, InputIterator sourceEnd, RandomAccessIterator destBeg,
RandomAccessIterator destEnd, BinaryPredicate op )
根据第n个元素排序:
void nth_element(RandomAccessIterator beg, RandomAccessIterator nth, RandomAccessIterator end)
void nth_element(RandomAccessIterator beg, RandomAccessIterator nth, RandomAccessIterator end, BinaryPredicate op)
Heap算法:
make_heap()
push_heap()
pop_heap()
sort_heap()
已序区间算法:
搜寻元素:
检查某个元素是否存在:
bool binary_search(FordwardIterator beg, ForwardIterator end, const T& value)
bool binary_search(FordwardIterator beg, ForwardIterator end, const T& value, BinaryPredicate op)
检查若干个元素是否存在:
bool includes(InputIterator1 beg, InputIterator1 end, InputIterator2 searchBeg, InputIterator2 searchEnd)
bool includes(InputIterator1 beg, InputIterator1 end, InputIterator2 searchBeg, InputIterator2 searchEnd, BinaryPredicate op)
搜寻第一个或最后一个可能位置:
FordwardIterator lower_bound(FordwardIterator beg, ForwardIterator end, const T& value)
FordwardIterator lower_bound(FordwardIterator beg, ForwardIterator end, const T& value, BinaryPredicate op)
FordwardIterator upper_bound(FordwardIterator beg, ForwardIterator end, const T& value)
FordwardIterator upper_bound(FordwardIterator beg, ForwardIterator end, const T& value, BinaryPredicate op)
搜寻第一个和最后一个可能位置:
pair
equal_range(FordwardIterator beg, FordwardIterator end, const T&value)
pair
equal_range(FordwardIterator beg, FordwardIterator end, const T&value, BinaryPredicate op)
Tips:
1.内置数组不支持erase()操作,所以unique()算法不太适合于内置数组类型。
2. 关联容器,如map,set,在内部维护元素的排序关系,以便允许快速查找或获取。因此不允许在关联容器上应用重新排序的泛型算法,如:sort()或 partition(),如果重新排序关联容器中的元素,我们必须先把它拷贝到顺序容器中,如vector或list。
3.list容器时一个双向链表,不支持随即存储,所以merge(),remove(),reserves(),sort(),unique(),最好不要应用于list对象上。