失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 猎豹网校C++ Primer学习笔记

猎豹网校C++ Primer学习笔记

时间:2019-06-11 21:54:54

相关推荐

猎豹网校C++ Primer学习笔记

1、头文件(15th课)

大型项目开发,要有很多头文件。只能写声明,不能定义(类定义和常量定义可以)。

自己新建头文件(类定义,外部变量声明,函数声明)。源文件包含对应的头文件。

头文件里写类的声明,源文件里写类的定义,类的所有成员。

为避免预处理重复拷贝,头文件保护符。防止多重包含。

2、命名空间(16th)

注意:头文件里不能使用using声明,用的话直接写全。

3、标准库string类型(17th)字符容器

using std::string;

si种初始化方法:()小括号是调用string对象的构造函数。

先初始化后再赋值,别这么写。

4、cin读入特点,遇空格暂停

cin>>name,也可以忽略掉前面的格式,如换行、空格、Tab。

遇空格暂停,但空格还在输入流里。下一次读取时,再次对前段格式处理,忽略空格。

改为使用getline(cin,name);

//在VS中使用cin>>会闪退,原因未知,用getline就正常。

#include "stdafx.h"#include<iostream>#include<string>using namespace std;int main(){string name;cout <<"input sth" << endl;//cin>>name; getline(cin,name);cout << name << endl;getchar();return 0;}

需要在cin>>后面加上cin.ignore():

cin>>name;

cin.ignore();

5、循环读入

循环读入,一次读入一行。

Win+z结束。输入重定向<。

一次读入一个单词,循环读入。

6、string类型的操作。.size(),.empty()

7、字符串拼接操作,+号两边必须有一个是string类型的!

循环读入并拼接:

8、string下标操作

循环操作string

使用C中的函数:但要加上头文件#include<cctype>

实现忽略标点符号的输出。

9、vector动态数组、类模板

#include<vector>;using namespace std;

可以使用下标索引。.push_back()尾部加数据。

vector<int> ivec;

初始为空,不可以通过下标操作添加数据。(1.初始就给长度;2.先cin>>temp,后再push)

vector<int> ivec(10);

其下标索引类型与string相似,size_type。

vector<int>::size_type index=1;

循环读入数据进vector

计算首尾两个数之和:

练习代码,这种循环读入形式需以ctr+Z结束。

#include "stdafx.h"#include<iostream>#include<string>#include<vector>using namespace std;int main(){cout<<"Input sth.:"<<endl;string str;vector<string> ivec;while(cin>>str){ivec.push_back(str);}//cin.ignore();//ivec.push_back(str);cout<<ivec[0]<<endl;getchar();return 0;}

循环读入单词并输出:判断长度要用.size()。

#include "stdafx.h"#include<iostream>#include<string>#include<vector>using namespace std;int main(){cout<<"Input sth.:"<<endl;string str;vector<string> ivec;while(cin>>str){ivec.push_back(str);}// for(vector<string>::size_type ix=0;ix!=sizeof(ivec);ix++)for(vector<string>::size_type ix=0;ix!=ivec.size();ix++){cout<<ivec[ix]<<endl;}cout<<"sizeof:"<<sizeof(ivec)<<endl;cout<<".size():"<<ivec.size()<<endl;//cin.ignore();//ivec.push_back(str); getchar();return 0;};

View Code

10、iterator迭代器,不用下标遍历

很多容器没法用下标,但所有容器都有迭代器。

迭代器实际上是一个指针,通过解引用(*)修改数据和读取数据。

常迭代器:

11、四个二进制一组即16进制

四个一组后,权值向前递次乘16。

十六进制数,可小写可大写。后面接H或前面加0x。

一个字节=8位二进制。

12、bitset<num>处理二进制

头文件!

下标计数为倒序,从0开始。

初始化,可以使用字符串。

也可以使用键盘输入来初始化:

.any();判断是否有1

.none();判断是否全是0

.count();计数1

.size()-.count();计数0

set(index)变成1,reset()把某位变成0,flip()翻转。

二进制变成十进制:

13、bitset应用-埃拉托斯特尼_筛法-寻找质数

先全初始化为1,然后从头开始向后筛选,遇倍数则置0。.count()可以统计质数个数,貌似应该-1。

然后循环输出即可:

改进1,只筛到根号即可。改进2,从平方处开始筛。

#include<cmath>

500万都没问题。

如果觉得《猎豹网校C++ Primer学习笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。