algorithm中常用的现成算法

1.binary_search()  确定容器中是否存在某个元素

2.equal() 确定两个集合中的所有元素皆相同。

3.lower_bound() 从头到尾,查找第一个大于或者等于所列元素的值的位置
            用法,参考下面的min_element();


4.upper_bound()  从头到尾,查找第一个大于所列元素的值的位置

5.make_heap( ) 创建一个堆并以序列的形式输出

6.max() 返回两个元素间的较大者

7.max_element() 返回序列中的最大值

8.min() 返回两个元素中的较小者


9.min_element()  返回序列中的最小值

            int a[]={1,4,66,43,2,56,443,23,234,4};

            int b= min_element(a,a+7)-a;

            int c= max_element(a,a+7)-a;

            如果想取值的话,直接加*
            :       *max_element(a,a+n)








10.mismatch()    查找两个序列中的第一个不相同的位置

11.pop_heap()   从一个堆中移除一个最大的元素

12.push_heap()   添加一个元素至堆

13.reverse()   将给定序列反转顺序,范围。

14.sort()   将序列升序排序

15.sort_heap()  将堆转变为有序序列

16.swap()   交换两个对象的值

17.unique()  移除连续的重复元素

            注意连续两个字,也就是说明了要先进性排序操作
            为什么呢?

            因为unique函数并没有把重复的元素删掉,他只是把那些重复的元素移动
            到了本序列的末尾,
            返回值是不重复序列的位置指针。
            所以如何显示不重复序列呢?

                1.一种方法是直接将不重复序列指针 it 到 vector.end()
                    对此阶段进行 删除

                    用erase()函数

                    erase(it,vector.end());

                2.直接将vector.begin 到不重复序列尾的 位置指针 it 将元素输出来
                    即,
                        vector<int>::iterator it=a.begin();




                        while(it!=  unique(a.begin(),a.end()))
                        {
                            cout<<*it<<" ";

                            it++;
                        }






            VECTOR_STRING::iterator iNameTor;  
            iNameTor = unique(vecNames.begin(), vecNames.end());  

            cout << "after unique(), contents are:" << endl;  
            printVec(vecNames);  

            cout << "unique return a iterator, point to the first Duplicate element " << endl;  
            cout << iNameTor - vecNames.begin() << endl << endl;  

            vecNames.erase(iNameTor, vecNames.end()); //删除重复元素  
            cout << "after erase(), contents are:" << endl;