STL 常用函数

泛型算法: 
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对象上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值