C++语法学习摘要2

前提摘要:在最近的C++语法学习中其实个人感触是遇到了好多C++中的库函数,几乎每个函数都是帮助我解决了当时的困境或者说便于我快捷的解决了当时的问题。当然也碰到了好一些简单算法和解题思想(比如曼哈顿距离·方向数组等等,这里也不具体列举了),在这里分享一下这段时间的一些笔记和总结。(纯手打,如果有一些文字错误还请见谅)如果觉得对你有帮助的话,就点个小赞吧,哈哈。

1.运算方面:

a.字符比较时,要注意大小写,所有参与运算的字符其实在计算机中都会转化为数字,再参与运算,简单说一下常用的ASCII值(A—65,a---97)。其次字符串比较时其实不是直接看长度的,,而是从第一个字母往后看,先看第一个字母的大小比较(参考ASCII值),然后依次往后看。最后我再延申出一个函数,是常用于字符串大小的比较的---strcmp(a,b),首先头文件是<cstring>,当然也可以直接用万能头文件,不过刚刚学习,我觉得还是别老用万能头,这样能加深我们这些初学者对C++语法的一些理解。这个函数就是可以直接比较字符串大小,如果a<b,则返回-1;a=b,返回0;a>b,返回1,都是用字典序比较。

b.只有float,double,这种浮点数参与除法运算才有小数。

c.eps=le-5;看到很多前辈都喜欢用英语单词或者英文缩写来定义一些变量,eg:eps一般代指精度,是误差中的阈值,le-5表示1*10^-5,就是一个科学计数法。

d.字面值和string对象相加时,必须确保每个加法运算符的两侧的运算对象至少有一个string,否则会报错,这是我写题时发现的一个小玩意。

2.常用函数操作小结:

a.void *memset(void *s, int ch, size_t n);

函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 。

对这个函数我个人有一些经验:

1memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的值,因为计算机底层就是0,1,这个比较贴合底层。

2.memset(void *s, int ch,size_t n);中ch实际范围应该在0~~255,因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节。(2^8-1=255)

3.还有一个要点就是不要记错ch和n的位置。

b.   void *memcpy(void *dest, const void *src, size_t n);

函数解释:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。这个比strcpy全能一点。

c.strlen(),求字符串的长度。

d.strcmp(a,b)比较两个字符串的大小。

e.strcpy(a,b)将字符串b复制给以a开始的字符串数组。

f.s.erase(pos,n)删除s中从pos开始的n个字符,返回s。

g.s.replace(pos1,n1,str)将s中从pos1开始的长度为n1的字符串替换为str。

h,swap(s,str)交换s和str的内容,返回void。

i.s.substr(pos,n)返回从pos开始的n个字符。

j.s.back()返回字符串的最后一个字符的引用。

k.s.pop_back()移除最后一个元素,常用于移位。

好啦,函数小结先写这么多啦,大部分函数解释都是我自己的话,还加了一些自己的理解,总体用法和意思都是正确的。

3.说一点日常输入输出遇到的小要点吧

a.long long 类型输出时,如果用printf函数时,用%lld格式输出(我个人之前老搞错)。

b.scanf函数处理数据时的注意点

1.遇到空格,回车,跳格会结束

2.遇到非法输入会结束,就是说如果输入的数据和你定义的格式不同的话,会结束,比如输入数字时,不小心把o当作0了,那它的输入流就会截至到o前面,相当于提前截至了

c.还有输出字符串时,用printf的话,要注意格式:printf("%s\n",s1.c_str());解释一下,这里的c_str()是返回s1字符串的首地址。

4.简单说一下我对曼哈顿距离的理解

这个曼哈顿距离指的是一个点坐标与中心点横坐标差的绝对值与纵坐标差的绝对值的和,一般用于解决绘制菱形问题,是真滴好用。

数学eg:(x1,y1) (x2,y2)  c=|x1-x2|+|y1-y2|

好啦,今天的学习分享就到这里吧,如果觉得有帮助的话,就点个赞吧,两千多字,纯手打,如果有些错别字啥的,请见谅哈。



 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的小八嘎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值