常用库函数的学习笔记

常用库函数

accmulate

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 data
1 2 3 4 5
sum 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];

输出

abcd
hhhh

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);

输出

10
4

因为a数组总长 10 ,所以sizeof输出10
而又因为,仅仅输入了4个字符’a’,所以strlen输出的是4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值