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++学习笔记,坚持自律!相关推荐

  1. 【Jetson Nano学习笔记】2. ORB-SLAM3及ZED 2i驱动安装

    目录 ZED 2i驱动安装 安装驱动 自测 ROS测试 zed2i.launch rostopic list rosnode list display_zed2i.launch zed_rtabmap ...

  2. 《张萌:高效能人士的自我管理》学习笔记

    作为职场高效能人士,张萌以丰富的理论实践经验.帮助你在管理自我.职场发展上寻求更多的可能. 学习笔记如下: 第一部分:效率系统篇 人生效率公式=(梦想-现状)/可奋斗时间 努力之前一定要想明白:第一, ...

  3. 《富爸爸,穷爸爸》思维导图和学习笔记

    <富爸爸,穷爸爸>思维导图和学习笔记 前言 本来想梳理数据分析师的技术栈,不过有段时间没写技术博客了,容易卡文,所以写点其他的.碰巧看了一本书<富爸爸,穷爸爸>,里面的内容挺有 ...

  4. BUUCTF-Crypto学习笔记(三)

    这是第三篇的BUUCTF-Crpto学习笔记了,希望能坚持下去 一.[GKCTF2020]小学生的密码学 打开题目,得到信息如下: #题目原文 e(x)=11x+6(mod26) 密文:welcylk ...

  5. Java学习笔记十七——集合类详细总结各自对比

    Java编程基础倒数第三篇,感谢没有放弃的自己. 学习笔记参考书籍<Java编程基础>主编 张焕生.本书内容比较适合没有什么基础的入门小白,学完一章还有习题,比较适合初学者. 自律.积极. ...

  6. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

最新文章

  1. webpack loader的套路
  2. Java中几种常见的循环
  3. pigeon hole
  4. python 串行线程终止后还会执行下一个吗_多线程笔记
  5. python-numpy.vectorize()
  6. 拓端tecdat|Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
  7. burp放包_详解BurpSuite软件 请求包 HTTP (9.23 第十天)
  8. 谷歌金山词霸合作版在PDF中不能取词
  9. Android应用程序添加、删除快捷方式
  10. Java的ASCII编码表
  11. Shell脚本语法小记
  12. android 转码工具下载,m3u8视频转码工具
  13. xms和xmx为什么要相同_为什么结婚蚕丝被,一定要有双宫茧子母被?
  14. python k折交叉验证,python中sklearnk折交叉验证
  15. HTTP状态码监测分析
  16. mongodb权限管理篇
  17. 使用ADO或ADO控件访问数据库
  18. about unit test in android ppt,选修5 unit4Learning about language.ppt
  19. 愿你遍历山河,觉得人间值得。
  20. Flask Web开发:基于Python的Web应用开发实战

热门文章

  1. 路由器测试的性能测试
  2. 学习笔记-应用编程与网络编程-2(文件属性+附代码)
  3. java四种权限修饰符 (private 、default(缺省)、prote、public)适用范围
  4. 纽约大学研究生 计算机科学 申请,纽约大学计算机科学硕士排名第35(2020年TFE Times排名)...
  5. 2022电动两轮市场格局分化,九号异军突起
  6. 移动短信回执怎么开通_发送什么指令到10086开通短信回执?
  7. dnf服务器状态查看,鉴别DNF真假客户端指引
  8. 积木Sketch Plugin:设计同学的贴心搭档
  9. 浅析私有化即时通讯软件的用处有哪些
  10. Linux 魔法系统请求键骇客