STL学习中。。。

来源:互联网 发布:淘宝小蜜在哪里 编辑:程序博客网 时间:2024/06/06 09:24

STL非常的神奇,它会给你做题带来很大的方便。

一.标准容器(container)概要:

   1.set<T>: 集合运算,他的主要功能是:插入元素后只会显示不同的数,且显示已按从小到大顺序排列,可以用于计算数组中有多少个不同的数

   set常用方法:

     begin()        ,返回set容器的第一个元素

     end()      ,返回set容器的最后一个元素

     clear()          ,删除set容器中的所有的元素

     empty()    ,判断set容器是否为空

     max_size()   ,返回set容器可能包含的元素最大个数

     size()      ,返回当前set容器中的元素个数

     rbegin     ,返回的值和end()相同

     rend()     ,返回的值和rbegin()相同

题目有:

   (1)Codeforces Round #150 (Div. 2) B. Undoubtedly Lucky Numbers

           题解:点击打开链接

2.queue<T>:队列,队尾进,队头出。
  常用函数:
    q.push(x);  入队,将x接到队列的末端。

 q.pop();     出队,弹出队列的第一个元素,注意,并不会返回被弹出元素的值。

 q.front();    访问队首元素,即最早被压入队列的元素。

 q.back();    访问队尾元素,即最后被压入队列的元素。

 q.empty();  判断队列空,当队列空时,返回true。

 q.size() ;     访问队列中的元素个数,

二.常用STL函数:

    1.函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置

举例如下:

      一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标

   则:

      pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number数组的下标为0的位置。

      pos = lower_bound( number, number + 8, 9) - number, pos = 1,即number数组的下标为1的位置(即10所在的位置)。

      pos = lower_bound( number, number + 8, 111) - number, pos = 8,即number数组的下标为8的位置(但下    标上限为7,所以返回最后一个元素的下一个元素)。

   

    所以,要记住:函数lower_bound()在first和last中的前闭后开区间进行二分查找,

    返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,
    且last的位置是越界的!!~

    返回查找元素的第一个可安插位置,也就是“元素值>=查找值”的第一个元素的位置。

2.

       unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),

     还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加                #include<iostream.h>,具体用法如下:

      int num[100];

      unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,

     该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,

     因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。



                            待续.....................


0 0
原创粉丝点击