【零碎知识点】数据结构与算法

一、atof()函数

atof()是C 语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数,所使用的头文件为<stdlib.h>。该函数名是 “ascii to floating point numbers” 的缩写。语法格式为:double atof(const char *nptr)。

二、stringstream

使用stringstream对象s简化类型转换,它内部有一个string的流对象缓冲区,它会识别输入的变量(s<<右边的变量)的类型转换为string存储到内部的缓冲区内,然后当用它输出时,它会识别输出变量(s>>右边的变量)的类型,然后从流对象中转化到该类型赋值给这个对象。

以空格为分割界限进行流分割

三、递归与栈的关系

递归对问题的处理顺序,是遵循了后进先出的规则
事实上,我们可以把任意一个递归程序转换成一个使用栈的程序。
递归和栈之间有一种紧密的联系。事实上,大部分的编译器是使用栈来实现递归的。

四、strstr函数

函数原型 : char* strstr(char *str1, char *str2);
功能 : 从str1中查找是否有str2字符串,如果有,从str1中str2出现的位置起返回str1的指针,如果没有,返回nullptr

五、c_str()函数

c_str()函数返回一个指向正规C字符串的指针常量,内容与本string串相同。
c_str()的原型是:const char*c_str() const;
c_str()生成一个const char *指针,指向以空字符终止的数组。(data()与c_str()类似,但是返回的数组不以空字符终止。)
注意:一定要使用strcpy()等函数来操作c_str()返回的指针。

六、判断是否为数字

isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。
检查参数c是否为阿拉伯数字0到9。返回值:若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)

七、增强型for循环

可用于数组和字符串
基本格式语法如下:

for(type element: arrays)
  {
    cout<<element;
  }

其中type为arrays的类型(例如String,int,double,float),element是被声明的新的局部变量,对应的是数组或集合中的每个元素值。arrays即是要访问的数组名。

八、求最大公约数和最大公倍数的方法

三目运算符

int gcd(int a,int b) {
    return b>0 ? gcd(b,a%b):a;
}

gcd库函数

#include <algorithm>
inline int gcd(int a,int b) {
	return __gcd(a,b);
}

知道了最大公约数,最小公倍数也就出来啦

只要求出a和b的最大公约数t然后用a和b的乘积除以t就可以得到a和b的最小公倍数啦~

九、c++中getline()、get()等函数的用法详解

1、cin>>
最基本也是最常用的做法,输入一个数字。
接受一个字符串,遇到”空格“、”TAB“、”回车“都结束
2、getline()
接受一个字符串,可以接受空格并输出
3、gets()
接受一个字符串,可以接受空格并输出
在C++中运行会产生bug。在C11标准中已被正式删除,不建议使用

十、strlen函数详解

size_t strlen( const char *string );
计算字符串sting的长度,并返回字符串string的长度
strlen是不会计算\0之后的长度的
定义字符串数组后,一定要初始化
注意strlen返回的类型,size_t 无符号长整型

十一、pow()函数用法详解

pow()函数无法使用int类型的数据,将int类型强制转换为double或float后再使用pow()函数,正确的办法是pow(int,double(int));

十二、sort()排序的使用

在sort中对于rbegin()和rend()的巧妙使用;

sort(a.begin(),a.end())从小到大; 升序

sort(a.rbegin(),a.rend());从大到小; 降序

sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们想从大到小排序可以将cmp参数写为greater < int >()就是对int数组进行排序,当然<>中我们也可以写double、long、float等等。如果我们需要按照其他的排序准则,那么就需要我们自己定义一个bool类型的函数来传入。比如我们对一个整型数组进行从大到小排序

十三、getchar()

程序执行到getchar()函数时,自动从输入缓冲区中去找字符,如果输入缓冲区中没有字符的话,那么就等待用户输入字符,此时用户使用键盘输入的字符,被输入到输入缓冲区中,键盘输入字符的时候首先进入输入缓冲区,然后getchar()函数获得的字符是从输入缓冲区中提取的且每次只能提取一个字符。

十四、cin.getline()

1.cin.getline()函数的完整形式有三个参数:cin.getline(字符数组名,字符个数,结束标志)
注意:若指定参数“字符个数”为n,则利用cout函数输出时只显示字符数组中的前n-1个字符。
原因:字符数组的第n个字符是不可见字符’\0’
2.当第三个参数省略时,系统默认为’\0’
3.简单实例: · cin.getline(str,8,‘m’),当输入abcdefghijklmn时,输出abcdefg,因为第8位是不可见字符’\0’
· cin.getline(str,8,‘e’),当输入abcdefghijklmn时,输出abcd

十五、unique函数

unique函数属于STL中比较常用函数,它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了。由于它”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。
unique函数的函数原型如下:
1.只有两个参数,且参数类型都是迭代器:
iterator unique(iterator it_1,iterator it_2);
这种类型的unique函数是我们最常用的形式。其中这两个参数表示对容器中[it_1,it_2)范围的元素进行去重,返回值是一个迭代器,它指向的是去重后容器中不重复序列的最后一个元素的下一个元素。
unique函数的去重过程实际上就是不停的把后面不重复的元素移到前面来,也可以说是用不重复的元素占领重复元素的位置。
2.unique函数通常和erase函数一起使用,来达到删除重复元素的目的。(注:此处的删除是真正的删除,即从容器中去除重复的元素,容器的长度也发生了变换;而单纯的使用unique函数的话,容器的长度并没有发生变化,只是元素的位置发生了变化)

十六、判断素数

bool isPrim(int x){
    if(x==0||x==1)
        return false;
    if(x==2)
        return true;
    for(int i=2;i<=sqrt(x)+1;i++)
        if(x%i==0)
            return false;
    return true;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值