常用库函数
这里写目录标题
常用库函数accmulateboundgetlinememsetmax/min _elementsortstrlenaccmulate
accumulate就是累计函数 仅适用于 vector当中
用法
accumulate(m,n,x)
各个参数表示
m:累计开始的位置 n:累计结束的位置 x:累计的初值
具体例子
vector<int>a;cout << "all data" << endl;for (int i = 1; i < 6; i++){a.push_back(i);cout << i << " " ;if (i==5){cout << endl;}}cout << "sum ";int x = accumulate(a.begin(),a.end(),0);cout << x << endl;
输出
all data1 2 3 4 5sum 15
除了可以累加,还可以累乘,只需要增加一个参数就可以了
具体例子
x = accumulate(a.begin(),a.end(),1,multiplies<int>( ));
除此之外,还可以是字符串的拼接哦!!!
但是,记得输出的是string哦!!!
vector<char>b;b.push_back('h');b.push_back('a');b.push_back('h');b.push_back('a');string y=accumulate(b.begin(),b.end(),string(""));cout << "string jiont ";cout << y;
bound
这个函数就是返回,结构中某个数或是大于某个数的第一个数字
具体详见代码
int num[6]={1,4,2,17,7,34}; int pos1=lower_bound(num,num+6,7)-num;返回的是 大于等于这个数的第一个数字的地址// 返回的是一个地址,// 所以如果返回要的是具体位置,还要减去开头的地址cout << pos1 << endl;
输出
3
虽然,7是在索引为4的位置
但是,17在其之前,而且符合大于7的条件,所以输出了7的索引!!
另一种bound
而upper_bound 返回的是大于 这个数字的索引地址pos1=upper_bound(num,num+6,7)-num;cout << pos1;
getline
就是类似于 cin 和 scanf的输入函数 他的特别之处就是在于 其终结的标志不再是空格,而是可以为其他东西
getline有两种模式
第一种
getline(cin,a);
a表示的是接受的单位 而这种方式接受的是string!!!!!
所以定义a的时候要是string类型
具体例子
string a;getline(cin,a);// getline接受的是字符串哦cout << a;// 停止的标志的回车
同时,我们也可以自定义终止标志,在函数里面添加参数
// 也可以自定义停止的字符getline(cin,a,'#');cout << a;// 这个时候就不是回车导致停止了
第二种模式
cin.getline(x,y);
x表示的是接受的单位 y表示接受多少字符串,大多都是x这个的数组的大小 !!!! 这个模式接受的是字符串数组,而不是string
具体例子
char xx[10];cin.getline(xx,10);cout << xx;
memset
这个函数就是将整个结构的数据进行一个全部统一赋值,或者可以叫做初始化,因为能赋的值不多
模板
memset(abc,x,sizeof(abc));
abc:需要初始化的结构
x:初始化的数值
sizeof(abc):整个结构都要初始化喔
!!!! 很重要的是!!!! 对于数字数值,这个方法可以叫做初始化,因为x只能够取 0或者是-1 不然的话,就会导致数据出现错误!!!
除了,数字数组可以初始化
字符串数组也是可以的!!!
这个时候x的值就没有限制了!!!
例子:
char xxx[5]="abcd";cout << xxx[3] << endl;memset(xxx,'h',sizeof(xxx)-1);cout << xxx[3];
输出
abcdhhhh
max/min _element
就是类似于python的max和min
所以没什么好说的
!!!但是要注意的是,我们还是要设置范围,而范围是该结构的地址!!!
所以最后输出的时候我们还要迭代回去
看代码咯
int a[5]={5,9,8,2,3};cout << *min_element(a,a+5) << endl;
对于数组来说,没有begin,所以直接把自己放上去即可(不知道对吗?)
对于vector来说
vector<int>l={5,9,8,2,3};auto m = max_element(l.begin(),l.end());cout << *m;
sort
就是sort。。。没什么好说的
基本使用
sort(a,b)
a:开始的地方
b:结束的地方
注意这两者都是该结构的地址
具体例子
int a[3]={2,1,0};sort(a,a+3);int len = sizeof(a)/4 -1;// cout << len;cout << a[len] << endl;
输出
2
strlen
就是就像他的名字一样
str + len
所以就是用于 测量字符串
和sizeof的区别 szieof是整个数组的长度,不管满没满字符(指的是非\0) 而strlen是这个字符串数组里面含有多少的字符串
具体例子
char a[10]="aaaa";cout << sizeof(a) << endl;cout << strlen(a);
输出
104
因为a数组总长 10 ,所以sizeof输出10
而又因为,仅仅输入了4个字符’a’,所以strlen输出的是4
如果觉得《常用库函数的学习笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!