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 ;
}

需要在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[]<<endl;
getchar();
return ;
}

循环读入单词并输出:判断长度要用.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=;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 ;
}
;

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学习笔记的更多相关文章

  1. 猎豹网校C++ Primer学习笔记2

    14.数组 数组定义时的长度必须是在编译时就能确定的值. 全局数组会自动初始化为0. size_t 15.指针 其指向类型要相同. 指针和引用: 指针可以先不初始化,可以修改指向.有指针的指针. 16 ...

  2. C++ Primer学习笔记(三) C++中函数是一种类型!!!

    C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...

  3. C++ Primer学习笔记(二)

    题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接  C++ Primer学习笔记(一)   27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...

  4. C++ Primer学习笔记(一)

    始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示  之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...

  5. C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型

    一.string    #include <string>  using std::string    初始化函数:    string s1;        默认构造函数 s1 为空串 ...

  6. C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)

    STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...

  7. C++ Primer 学习笔记_35_STL实践与分析(9)--map种类(在)

    STL实践与分析 --map类型(上) 引: map是键-值对的集合. map类型通常能够理解为关联数组:能够通过使用键作为下标来获取一个值,正如内置数组类型一样:而关联的本质在于元素的值与某个特定的 ...

  8. C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】

    STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...

  9. C++Primer学习笔记(1)

    序: 为了重新扎扎实实地再深入学习一遍C++,我选择了C++ Primer这本经典.又开了这个系列的随笔,用于记录学习过程中遇到的一些有趣的问题和心得.同时,也是想通过写随笔的方式督促自己不断进步,争 ...

随机推荐

  1. linux运维之路配置网络

    前言裸机上装操作系统,想和物理机通信需要设置IP 开机以后: 第一步:setup命令  ——>  NetWork configguation  ---->Device configurat ...

  2. C++——虚函数表解析

     转自:https://blog.csdn.net/haoel/article/details/1948051 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型指针指 ...

  3. pyspider 安装

    1. sudo apt --update 2.sudo apt --upgrade 3. sudo apt-get install  ......大一推依赖包.看pyspider 官网 4.创建虚拟环 ...

  4. 3星|华杉华楠《超级符号原理》:超级符号是指注册为商标的企业logo

    “ 超级符号是私有财产,超级符号是通过对传统符号的改造,使之成为注册商标,成为私有化财产,通过占有它,让竞争对手无法使用.P112” 超级符号原理 作者: 华杉 华楠 出版社: 文汇出版社 出版年: ...

  5. 3星|路骋《用得上的商学院》:100个MBA知识点的简单介绍

    作者在序言中说,放弃了上亿的股票期权去念了两年全脱产的清华-MIT Global MBA.念完后认为课程不错,考虑到这种课本科毕业不能直接念,工作几年后又很难脱产来念,因此办了一个音频课程来讲这个MB ...

  6. Codeforces Round #512 (Div. 2) D. Vasya and Triangle(几何+思维)

    题目 题意: 给出 n,m,k ,让你在长为 n,宽为 m 的坐标系里构建一个三角形,使得面积= n*m/k.如果存在,输出“YES”,输出三角形三个顶点的坐标:  如果不存在,输出“NO”. 思路: ...

  7. linux网络编程之system v消息队列(一)

    经过上次对于进程通讯的一些理论的认识之后,接下来会通过实验来进一步加深对进程通讯的认识,话不多说,进入正题: 其实还可以通过管道,但是,管道是基于字节流的,所以通常会将它称为流管道,数据与数据之间是没 ...

  8. 使用python控制nginx禁封ip

    python控制nginx禁封ip nginx中的access.log最近有大量的用户访问,怎么样屏蔽掉在一定时间段内访问次数多的ip呢? 测试准备: 两个tomcat,一个nginx做均衡负载,服务 ...

  9. Topshelf 使用

    前言 在写后台代码的过程中,经常会遇到要写一些单独的服务.以前呢,直接用的是 .NET 下的 “Windows 服务” 控件开发的. 这个传统的控件开发起来很不方面,使用也不友好.发现有用 Topsh ...

  10. [CTSC2008]网络管理Network

    题意 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高速光 ...