pair
pair的定义
pair是将2个数据组合成一组数据的一种数据类型,pair是通过struct结构体实现的
其标准库类型–pair类型定义在#include 头文件中
类模板:template<class T1,class T2> struct pair
参数:T1是第一个值的数据类型,T2是第二个值的数据类型。
功能:将一对值合在一起,比如二维坐标(x,y),当然可以用结构体实现,但是使用pair有它的简洁之处。两个值分别通过 .first 和 .second 来访问。
创造pair类型:make_pair()
通过make_pair(v1,v2),其中v1,v2的数据类型就是该对组的数据类型,对组常用于map中,即一个为key,一个为value.
常用库函数
memset()
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。
void *memset(void *s, int c, size_t n);
s指向要填充的内存块。
c是要被设置的值。
n是要被设置该值的字符数。
返回类型是一个指向存储区s的指针。
getline()
getline()是一个输入字符串的函数。
cin在遇到第一个非空格字符时便会开始输入,之后再遇到空格字符时便会停止输入,即cin不可以输入包含空格字符的字符串;
而getline()则可以输入包括空格的字符
例如输入
wsh is a beautiful girl
如果使用cin,它读取到wsh就会停止输入,而getline可以输入一整个句子。
语法:
getline(cin,temp);
strlen()
函数原型:
size_t strlen( const char *string );
说明:计算字符串sting的长度,并返回字符串string的长度(值得注意的是,它并不会把’\0’计入,而是计算到’\0’便停止)
返回类型:size_t 是一个无符号长整型类型,直接作为数值运算时得注意,计算结果是否会越界
min()、max()、minmax()、min_element()、max_element()
min()返回最小值
max()返回最大值
minmax()返回最大值与最小值。
min_element()返回最小值的迭代器。
max_element()返回最大值的迭代器。
其中min、max_element()接收的参数是容器的首尾地址。
lower_bound()、upper_bound()
1.对于一个从小到大排序的数组,lower_bound(begin,end,x) 查找成功返回的是从地址begin到end-1中第一个大于或者等于x的地址,减去begin恰好为数组下标。查找失败返回end。
2.对于一个从小到大排序的数组,upper_bound(begin,end,x) 查找成功返回的是从地址begin到end-1中第一个大于x的地址,减去begin恰好为数组下标。查找失败返回end。
3.对于一个从大到小排序的数组,lower_bound(begin,end,x,greater < int >()) 查找成功返回的是从地址begin到end-1中第一个小于或者等于x的地址,减去begin恰好为数组下标。查找失败返回end。
4.对于一个从大到小排序的数组,upper_bound(begin,end,x,greater< int >()) 查找成功返回的是从地址begin到end-1中第一个小于x的地址,减去begin恰好为数组下标。查找失败返回end。
5.upper_bound和lower_bound查找是通过二分查找的,所以查找序列必须是排好序的。
sort()
sort()函数可以自动选择最节省时间的方法进行排序。
sort(begin, end, cmp)其中begin是第一个元素的指针(),end是最后一个元素的指针。cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们想从大到小排序可以将cmp参数写为greater()就是对int数组进行排序,当然<>中我们也可以写double、long、float等等。如果我们需要按照其他的排序准则,那么就需要我们自己定义一个bool类型的函数来传入。
accumulate()
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。
对于数值,累加后得到数值的总和
对于字符串,则是进行多个字符串的拼接,返回拼接后的字符串