猎豹网校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 ;
}
需要在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学习笔记的更多相关文章
- 猎豹网校C++ Primer学习笔记2
14.数组 数组定义时的长度必须是在编译时就能确定的值. 全局数组会自动初始化为0. size_t 15.指针 其指向类型要相同. 指针和引用: 指针可以先不初始化,可以修改指向.有指针的指针. 16 ...
- C++ Primer学习笔记(三) C++中函数是一种类型!!!
C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...
- C++ Primer学习笔记(二)
题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接 C++ Primer学习笔记(一) 27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...
- C++ Primer学习笔记(一)
始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示 之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...
- C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型
一.string #include <string> using std::string 初始化函数: string s1; 默认构造函数 s1 为空串 ...
- C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)
STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...
- C++ Primer 学习笔记_35_STL实践与分析(9)--map种类(在)
STL实践与分析 --map类型(上) 引: map是键-值对的集合. map类型通常能够理解为关联数组:能够通过使用键作为下标来获取一个值,正如内置数组类型一样:而关联的本质在于元素的值与某个特定的 ...
- C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】
STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...
- C++Primer学习笔记(1)
序: 为了重新扎扎实实地再深入学习一遍C++,我选择了C++ Primer这本经典.又开了这个系列的随笔,用于记录学习过程中遇到的一些有趣的问题和心得.同时,也是想通过写随笔的方式督促自己不断进步,争 ...
随机推荐
- Android笔记 (一) 第一次接触Android
1.下载android SDK 访问http://developer.android.com/ → GET THE SDK → Installing the Android SDK → STAN ...
- AD19新功能之跟随走线
跟随走线 AD19新增跟随走线,比如需要按照特定的轨迹进行走线,比如要绕着一个圆进行走线,或者靠着边框走线,普通模式下的效果如下图所示,线会跟着指针跑: 在走线模式下,按住 shift + f ,然后 ...
- IoC与DI的理解
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/b ...
- Codeforces Round #519 D - Mysterious Crime
题目 题意: 在m组数,每组有n个数(数的范围1-n)中,找到某些序列 使它是每组数的一个公共子序列,问这样的某些序列的个数? 思路: 不难想出答案ans是≥n的. 创立一个next数组,使每组中第i ...
- Kotlin基础特性深入讲解
继续学习基础语法,在上次https://www.cnblogs.com/webor2006/p/11183077.html中定义了一个两数相加的函数,如下: 其实对于这个函数还可以进一步简写,因为函数 ...
- subprocess模块笔记
subprocess笔记 import subprocess subprocess.call("netstat -ano") #父进程等待子进程完成任务,返回执行结果和结束信息0或 ...
- UML再论关系extend和include
我在画用例图时,图中既有extend关系也有include关系,师父就问我这两种关系的区别,我在画的时候确实查阅了很多资料,可是在问的时候还是回答不上来,这就是这篇博客得来的缘由了. [include ...
- 【轉】mantis安裝
一.mantis简介 可以看出,mantis是一个基于php技术的,个人觉得这个系统还是很完善的. 安装mantis,需要安装一下软件: phpMyAdmin 下载地址https://w ...
- TOMCAT 请求HTTP原理
一.Tomcat是什么?Tomcat是一个Web应用服务器,同时也是一个Servlet/JSP容器.Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servle ...
- jaxa技术2
XStream 1. 什么作用 * 可以把JavaBean转换为(序列化为)xml 2. XStream的jar包 * 核心JAR包:xstream-1.4.7.jar: * 必须依赖包:xpp ...