stl中的对组pair、C++常用库函数

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算法返回累加的结果,其返回类型就是其第三个实参的类型。
对于数值,累加后得到数值的总和
对于字符串,则是进行多个字符串的拼接,返回拼接后的字符串

共勉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值