C++学习笔记,坚持自律!
C++学习笔记
- 前言
- 一、变量和基本类型
- 1.处理类型
- (1)auto类型说明符
- (2)decltype类型指示符
- 二、字符串、向量和数组
- 1.String
- (1)初始化
- (2)string对象上的操作
- ①使用getline读取一整行
- ②处理string对象中的字符
- 2.vector
- (1)初始化
- (2)向vector中添加元素
- (3)vector的其他操作
- vector注意!!!
前言
放了寒假了,也不能去外边玩,游戏也玩的没意思了。只能窝在家好好学习了哈哈。
之前做数据结构题的时候,有好多都不会,然后就去CSDN上找那些大佬们做的,其中好多都是C++的,感觉C++好像很厉害,于是就买了一本C++的书,叫《c++ Primer》的书,第五版的,准备自学!!!
做这个笔记也无非就是想督促一下自己,希望能坚持下去吧!!
以下好多笔记都是源自于书上,若有侵权,立马删除!!!
提示:笔记主要还是挑一些重点的来看吧,基本上是那些不用于C的。
如果大佬们还有自己认为重要的知识点,欢迎来补充~~~
感谢!!!
一、变量和基本类型
1.处理类型
(1)auto类型说明符
auto是让编译器自己去分析表达式所属的类型
它会忽略顶层const,如果希望是顶层的,则需声明出来
int i=1;
const int ci=i, &cr=ci;
auto b=ci; //b是一个整数,ci的顶层const被忽略掉了
auto c=cr; //c是一个整数,同上
auto d=&i; //d是一个整型指针
auto e=&ci //e是一个指向整数常量的指针,底层constconst auto f=ci; //ci的推演类型是int,f是const int
(2)decltype类型指示符
选择并返回操作数的数据类型
decltype((variable))的结果永远是 引用
decltype(variable)的结果只有当variable本身就是一个引用时才是引用
decltype(f()) sum=x; //sum的类型就是函数f的返回类型decltype((i)) d; //错误:d是int&,必须初始化
decltype(i) d; //正确:e是一个(为初始化的)int
二、字符串、向量和数组
using:头文件不应包含using
1.String
(1)初始化
string s1; //默认初始化,s1是一个空字符串
string s2(s1); //s2是s1的副本
string s2=s1; //同上
string s3("value"); //s3是字面值"value"的副本,除了字面值最后的那个空字符外
string s(n,'c'); //把s初始化为由连续n个字符c组成的字符
(2)string对象上的操作
操作 | 作用 |
---|---|
os<<s | 将s写到输出流os中,返回os |
is<<s | 从is中读取字符串赋给s,字符串以空白分隔,返回is |
getline(is,s) | 从is中读取一行赋给s,返回is |
s.empty() | 判断为空返回true,不为空返回false |
s.size() | 返回s中字符的个数 |
s[n] | s中第n个字符,n从0开始 |
s1+s2 | s1和s2连接 |
s1=s2 | 赋值 |
s1==s2 | 判断 |
s1!=s2 | 对大小写敏感 |
<,<=,>,>= | 利用字符在字典中的顺序进行比较,对大小写敏感 |
①使用getline读取一整行
如果直接用 cin 输入的话,他会从第一个非空白符开始读取,直到遇见下一处空白为止。
若想要那被忽略掉的空白符,那么就会用到getline语句。
代码如下(示例):
string line;
//每次读取一行,直到文件末尾?
while (getline(cin,line))cout << line << endl; //line中不包含换行符,需要手动添加
②处理string对象中的字符
此处用到了头文件 cctype
操作 | 作用 |
---|---|
isalnum( c ) | 当c是字母或数字时为真 |
isalpha( c ) | 当c是字母时为真 |
iscntrl( c ) | 当c是控制字符时为真 |
isdigit( c ) | 当c是数字字符时为真 |
isgraph( c ) | 当c不是空格但可打印时为真 |
islower( c ) | 当c是小写字母时为真 |
isprint( c ) | 当c是可打印字符时为真 |
ispunct( c ) | 当c是标点符号时为真 |
isspace( c ) | 当c是空白时为真(空格、制表符、回车、换行、进纸符) |
isupper( c ) | 当c是大写字母时为真 |
isxdigit( c ) | 当c是十六进制时为真 |
tolower( c ) | 如果c是大写字母,则输出小写字母,否则原样输出 |
toupper( c ) | 与上相反 |
要想处理string中的一部分字符
一种是可以像C那样使用下标;
还有一种是使用迭代器(??)
//处理每个字符,用基于范围的for语句
string str("some string");
//每行输出str中的一个字符
for(auto c:str)cout << c << endl;
2.vector
学完vector之后,第一印象是感觉这个有点像数据结构里边讲的栈,但它比栈灵活多了
(1)初始化
1、引用不可以成为vector的元素,因为他不是对象
2、可以用花括号初始化每一个值
3、可以用括号指定元素个数或相同的元素值
4、只能使用直接初始化,不可以使用拷贝初始化(只有在类型相同的时候才可以拷 贝)
5、适用于三种情况:①初始值已知且数量较少
②初始值是另一个vector对象的副本
③所有元素的初始值都一样
(2)向vector中添加元素
举个书上的例子
vector<int> v; //空vector对象
for(int i=0;i!=100;++i)v.push_back(i); //依次把整数值放到v的尾端,相当于栈的后入
//循环结束后v有100个元素,从0到99
(3)vector的其他操作
这些操作基本上和string的一些操作差不多
操作 | 作用 |
---|---|
v.empty() | 如果v不含有任何元素,返回真;反之,则假 |
v.size() | v中元素的个数 |
v[n] | 返回v中第n个位置上元素的引用 |
v1=v2 | 用v2中元素的拷贝替换v1中的元素 |
v1={a,b,c…} | 用列表中元素的拷贝替换v1中的元素 |
v1==v2 | v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同 |
<,<=,>,>= | 以字典顺序进行比较 |
vector注意!!!
vector的下标类型和string的一样,都是 size_type 类型。不能用下表形式添加元素
举个栗子
比如向vector对象中添加10个元素
vector<int> v; //空vector对象
for(decltype ( v.size() ) i=0;i!=10;i++)v[i]=i;
for(decltype ( v.size() ) i=0;i!=10;i++)v.push_back(i);
在这里边,第一个for循环是错误的,v是一个空vector,不包含任何元素,所以也就不存在可以通过下标去访问元素。
要想添加元素,就目前而言,只能用push_back(t),向尾端添加元素。
C++学习笔记,坚持自律!相关推荐
- 【Jetson Nano学习笔记】2. ORB-SLAM3及ZED 2i驱动安装
目录 ZED 2i驱动安装 安装驱动 自测 ROS测试 zed2i.launch rostopic list rosnode list display_zed2i.launch zed_rtabmap ...
- 《张萌:高效能人士的自我管理》学习笔记
作为职场高效能人士,张萌以丰富的理论实践经验.帮助你在管理自我.职场发展上寻求更多的可能. 学习笔记如下: 第一部分:效率系统篇 人生效率公式=(梦想-现状)/可奋斗时间 努力之前一定要想明白:第一, ...
- 《富爸爸,穷爸爸》思维导图和学习笔记
<富爸爸,穷爸爸>思维导图和学习笔记 前言 本来想梳理数据分析师的技术栈,不过有段时间没写技术博客了,容易卡文,所以写点其他的.碰巧看了一本书<富爸爸,穷爸爸>,里面的内容挺有 ...
- BUUCTF-Crypto学习笔记(三)
这是第三篇的BUUCTF-Crpto学习笔记了,希望能坚持下去 一.[GKCTF2020]小学生的密码学 打开题目,得到信息如下: #题目原文 e(x)=11x+6(mod26) 密文:welcylk ...
- Java学习笔记十七——集合类详细总结各自对比
Java编程基础倒数第三篇,感谢没有放弃的自己. 学习笔记参考书籍<Java编程基础>主编 张焕生.本书内容比较适合没有什么基础的入门小白,学完一章还有习题,比较适合初学者. 自律.积极. ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
最新文章
- webpack loader的套路
- Java中几种常见的循环
- pigeon hole
- python 串行线程终止后还会执行下一个吗_多线程笔记
- python-numpy.vectorize()
- 拓端tecdat|Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
- burp放包_详解BurpSuite软件 请求包 HTTP (9.23 第十天)
- 谷歌金山词霸合作版在PDF中不能取词
- Android应用程序添加、删除快捷方式
- Java的ASCII编码表
- Shell脚本语法小记
- android 转码工具下载,m3u8视频转码工具
- xms和xmx为什么要相同_为什么结婚蚕丝被,一定要有双宫茧子母被?
- python k折交叉验证,python中sklearnk折交叉验证
- HTTP状态码监测分析
- mongodb权限管理篇
- 使用ADO或ADO控件访问数据库
- about unit test in android ppt,选修5 unit4Learning about language.ppt
- 愿你遍历山河,觉得人间值得。
- Flask Web开发:基于Python的Web应用开发实战
热门文章
- 路由器测试的性能测试
- 学习笔记-应用编程与网络编程-2(文件属性+附代码)
- java四种权限修饰符 (private 、default(缺省)、prote、public)适用范围
- 纽约大学研究生 计算机科学 申请,纽约大学计算机科学硕士排名第35(2020年TFE Times排名)...
- 2022电动两轮市场格局分化,九号异军突起
- 移动短信回执怎么开通_发送什么指令到10086开通短信回执?
- dnf服务器状态查看,鉴别DNF真假客户端指引
- 积木Sketch Plugin:设计同学的贴心搭档
- 浅析私有化即时通讯软件的用处有哪些
- Linux 魔法系统请求键骇客