STL函数

来源:互联网 发布:霍光传不可不读 知乎 编辑:程序博客网 时间:2024/05/22 17:21

泛型算法:
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对象上。

原创粉丝点击