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
题解:点击打开链接
q.pop(); 出队,弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
q.front(); 访问队首元素,即最早被压入队列的元素。
q.back(); 访问队尾元素,即最后被压入队列的元素。
q.empty(); 判断队列空,当队列空时,返回true。
q.size() ; 访问队列中的元素个数,
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去除的是相邻的重复元素,所以一般用之前都会要排一下序。