【每日总结】2021-2-4
学习时间:5h
学习内容:c++与STL入门
笔记
输入输出流iostream
优点:不需要占位符,避免输入输出的类型和占位符不统一。
缺点:速度慢
加速方法:关闭和stdio的同步,即调用ios::sync_with_stdio(false)。
命名空间namespace
Using namespace std
声明数组时,数组大小可以使用const声明的常数
Bool值,true表示真,false表示假
引用
Void swap2(int &a,int t&b)
{
int t=a;a=b;b=t;
}
在参数名之前加一个“&”符号,就表示这个参数按照传引用的方式传递。这样,在函数内改变参数的值,也会修改到函数的实参。(c++中的引用就是变量的”别名“,可以在一定程度上代替指针。)
String类型:
支持流式读写,可以像整数那样“相加“,有很多方便的函数和运算符,但速度较慢。
结构体:
不再需要使用typedef的方式定义一个struct,而且在struct里面除了可以有变量之外还可以有函数。
模板:
没看懂。。。。。
STL:c++的标准模板库:
排序与检索:
algorithm头文件中的sort可以给任意对象排序,包括内置类型和自定义类型,前提是类型定义了“<”运算符。排序之后可以用lower _bound查找大于或等于的第一个位置。待排序/查找的元素可以放在数组里,也可以放在vector里。
不定长数组:vector:
若a是一个vector,可以用a.size()_读取它的大小,a.resize()改变大小,a.push_back()向尾部添加元素,a.pop_back()删除最后一个元素。
vector需要用vector<int>
a或者vector<double>b
这样的方式来声明一个vector。可以直接赋值,还可以作为函数的参数或返回值,而无需像数组那样另外用一个变量指定元素个数。
集合:set
每个元素最多只出现一次。和sort一样,自定义类型也可以构建set,但必须定义小于运算符。
映射:map
Map就是从键到值的映射。因为重载了[]运算符,map像是数组的“高级版“。例如可以用map<string,int>month_name
来表示”月份名字到月份编号“的映射,然后用month_name[“July”]=7这样的方式赋值。Map也称为”关联数组“。
栈:stack
定义:stack<int>s
Push()入栈,pop()出栈,top()取栈顶元素但不删除。
队列:queue
定义:queue<int>s
Push()入队,pop()出队,front()取队首元素但不删除。
优先队列:
定义:priority_queue<int>pq
默认越小的整数优先级越低。
庚子年 春 怀化