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

1、头文件(15th课)

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

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

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

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

猎豹网校C++ Primer学习笔记_第1张图片

2、命名空间(16th)

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

猎豹网校C++ Primer学习笔记_第2张图片

猎豹网校C++ Primer学习笔记_第3张图片

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

猎豹网校C++ Primer学习笔记_第4张图片

 

 using std::string;

猎豹网校C++ Primer学习笔记_第5张图片

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

猎豹网校C++ Primer学习笔记_第6张图片

猎豹网校C++ Primer学习笔记_第7张图片

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

 猎豹网校C++ Primer学习笔记_第8张图片

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

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

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

改为使用getline(cin,name);

猎豹网校C++ Primer学习笔记_第9张图片

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

#include "stdafx.h"
#include
#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结束。输入重定向<。

猎豹网校C++ Primer学习笔记_第10张图片

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

猎豹网校C++ Primer学习笔记_第11张图片

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

猎豹网校C++ Primer学习笔记_第12张图片

猎豹网校C++ Primer学习笔记_第13张图片

猎豹网校C++ Primer学习笔记_第14张图片

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

猎豹网校C++ Primer学习笔记_第15张图片

循环读入并拼接:

猎豹网校C++ Primer学习笔记_第16张图片

8、string下标操作

 猎豹网校C++ Primer学习笔记_第17张图片

循环操作string

猎豹网校C++ Primer学习笔记_第18张图片

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

猎豹网校C++ Primer学习笔记_第19张图片

猎豹网校C++ Primer学习笔记_第20张图片

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

猎豹网校C++ Primer学习笔记_第21张图片

9、vector动态数组、类模板

 #include;using namespace std;

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

vector ivec;

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

vector ivec(10);

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

vector::size_type index=1;

猎豹网校C++ Primer学习笔记_第22张图片

猎豹网校C++ Primer学习笔记_第23张图片

猎豹网校C++ Primer学习笔记_第24张图片

猎豹网校C++ Primer学习笔记_第25张图片

 循环读入数据进vector

猎豹网校C++ Primer学习笔记_第26张图片

计算首尾两个数之和:

猎豹网校C++ Primer学习笔记_第27张图片

 

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

#include "stdafx.h"
#include
#include<string>
#include

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<0]<<endl;
    getchar();
    return 0;
}

 猎豹网校C++ Primer学习笔记_第28张图片

猎豹网校C++ Primer学习笔记_第29张图片

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

猎豹网校C++ Primer学习笔记_第30张图片

#include "stdafx.h"
#include
#include<string>
#include

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

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

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

猎豹网校C++ Primer学习笔记_第31张图片

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

猎豹网校C++ Primer学习笔记_第32张图片

常迭代器:

猎豹网校C++ Primer学习笔记_第33张图片

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

猎豹网校C++ Primer学习笔记_第34张图片

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

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

一个字节=8位二进制。

猎豹网校C++ Primer学习笔记_第35张图片

12、bitset处理二进制

头文件!

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

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

猎豹网校C++ Primer学习笔记_第36张图片

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

猎豹网校C++ Primer学习笔记_第37张图片

.any();判断是否有1

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

.count();计数1

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

猎豹网校C++ Primer学习笔记_第38张图片

猎豹网校C++ Primer学习笔记_第39张图片

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

二进制变成十进制:

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

猎豹网校C++ Primer学习笔记_第40张图片

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

猎豹网校C++ Primer学习笔记_第41张图片

然后循环输出即可:

 猎豹网校C++ Primer学习笔记_第42张图片

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

#include

500万都没问题。

猎豹网校C++ Primer学习笔记_第43张图片

 

转载于:https://www.cnblogs.com/wxl845235800/p/11396323.html

你可能感兴趣的:(c/c++)