前言:
因为单独看书的话,比如一些函数类的东西都记不住,并且看完一些重点也常常忘记,所以写一下笔记,方便以后查阅。
C++因为之前没有什么经验,所以现在看的书是《Accelerated C++》这本,这本书算是C++入门的书籍了,讲的东西都是比较基础的内容。希望这本书阅读完了以后能对C++有所入门,到时候可以看一些进阶的书籍。
2016.11.24 DAGE
a.基本的格式
#include <iostream>
using namespace std;
int main(void)
{
cout << "Hello World" << endl;
return 0;
}
b.基础关键字
1.关于输入输出cin/cout
- cin与cout都是流类型的,即osrtam类型
- 在cout 表达式里面,会有<<符号,这个符号具有左结合性,其左侧要尽可能多的表达式,右侧尽可能少的表达式,<<会把它右侧的表达式内容写入到左侧的操作数所指示的流中。
在cin 表达式中,>>会从标准输入流读取某种类型的变量,把读取到的值保存在>>右侧的变量里面。结合性是右结合性。
PS:这儿还有一个系统缓冲区的概念
系统会进行优化,比如输出的内容,会把输出的数据先放到输出缓冲区里面,然后等到一定的条件,才会把缓冲区里面的内容进行输出,然后清空缓冲区,这个被称为刷新缓冲区。
刷新缓冲区的条件:
缓冲区慢了,系统会自动刷新缓冲区。
需要从标准输入流里面读入数据,会立即刷新缓冲区。
明确写了刷新缓冲区的命令。如果前面没有using namespace std;那么cout需要写成std::cout <<…的格式,其中::是作用域运算符,左边是一个作用域的名称,右边也是一个名称,这个名称是在左边的作用域中定义的。
2.接口
- 隐藏在对变量定义的类型里面还有接口,–对于某种定义的类型来说,接口就是可实现操作的集合。
- 比如说定义了一个int型的变量,那么可以对这个变量进行int类型所有的操作。
3.string字符串类型
string name = “jack”;
string manage = name + ‘eat apple’;
string buf(10, ‘A’);
这儿的+的作用是将两个个字符串或字符串直接量(“assert”)连接起来,把连接起来的字符串赋值给字符串manage。在不同的情况下可以通过运算符+的操作数类型来判断这个运算符是做什么的,如果一个运算符对于不同类型的操作数有着不同的含义,那么这个运算符就是被重载了。
但是运算符唯一不变的是它的结合律。
第三种定义方式是定义一个字符串,并且给其赋值10个字符’A’,字符串长度为10,后面的字符也可以使用字符变量char c;也可以。
字符串长度可以使用name.size()获得
用来保存字符串长度的变量size_type:
string:size_type cols = name.size() + 2;
为什么要定义为这种类型的,比如name变量在定义了以后使用cin来进行输入,并且输入的极长,那么如果定义一个int型的变量可能会存储不下,当然,大多数情况下使用int型来保存一个字符串的长度也是可以的。4.运算符的优先级
算术运算符 > 关系运算符 > 逻辑运算符
9>4+2&&5先算+,再比较大小,在进行&&运算5.vector类型
向量是一个存储数值集合的容器,在一个向量中所有的数值都具有相同的类型,但是不同的向量可以保存不同类型的对象。
用法:
vector buf;
buf.push_back(5); //会把5这个数添加到向量的末尾,并且使向量的长度加一。
vector::size_type bufsize = buf:size(); //向量的长度
buf.pop_back(); //弹出向量末尾的数据,没有返回值