在c++中除了一些顺序容器外,标准库中还定义了三个容器适配器:stack、queue和priority_queue。适配器是标准库中的一个通用概念。容器、迭代器和函数本质上都是适配器。本质上,一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样。一个容器适配器接受一种已有的容器类型,使其行为看起来像一种不同的类型。例如,stack适配器接受一个顺序容器(除array和rorward_list外),并使其操作起来像一个stack一样
1、运算符函数定义格式
2、map,unorder_map 与pair类型 C++:关联容器(02):pair及其与map关系 - 知乎
3、
priority_queue
4、decltype C++11新标准学习:decltype关键字 - 龙心纹 - 博客园
5、类模板template和greater/less greater<int>()和less<int>()的使用_chijianxingfeng的博客-优快云博客_less<int>()
6、循环不变量
We use loop invariants to help us understand why an algorithm is correct. We
must show three things about a loop invariant:
Initialization: It is true prior to the first iteration of the loop.
Maintenance: If it is true before an iteration of the loop, it remains true before the
next iteration.
Termination: When the loop terminates, the invariant gives us a useful property
that helps show that the algorithm is correct.
7、当调用函数时,有三种向函数传递参数的方式:
传值调用 | 该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。 |
指针调用 | 该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
引用调用 | 该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
C++ 引用 vs 指针
引用很容易与指针混淆,它们之间有三个主要的不同:
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
C++ 中创建引用
试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二个标签。因此,您可以通过原始变量名称或引用来访问变量的内容。
8、2.字符串操作函数
这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。
a) =,assign() //赋以新值
b) swap() //交换两个字符串的内容
c) +=,append(),push_back() //在尾部添加字符
d) insert() //插入字符
e) erase() //删除字符
f) clear() //删除全部字符
g) replace() //替换字符
h) + //串联字符串
i) ==,!=,<,<=,>,>=,compare() //比较字符串
j) size(),length() //返回字符数量
k) max_size() //返回字符的可能最大个数
l) empty() //判断字符串是否为空
m) capacity() //返回重新分配之前的字符容量
n) reserve() //保留一定量内存以容纳一定数量的字符
o) [ ], at() //存取单一字符
p) >>,getline() //从stream读取某值
q) << //将谋值写入stream
r) copy() //将某值赋值为一个C_string
s) c_str() //将内容以C_string返回
t) data() //将内容以字符数组形式返回
u) substr() //返回某个子字符串
v)查找函数
w)begin() end() //提供类似STL的迭代器支持
x) rbegin() rend() //逆向迭代器
y) get_allocator() //返回配置器
9、C++ auto 和decltype c++ auto关键字使用_Tw!light的博客-优快云博客
10、C++ switch
switch(expression){ case constant-expression : statement(s); break; // 可选的 case constant-expression : statement(s); break; // 可选的 // 您可以有任意数量的 case 语句 default : // 可选的 statement(s); }
11、
STL中的二分查找——lower_bound 、upper_bound 、binary_search
lower_bound算法返回一个非递减序列[first, last)中的第一个大于等于val的位置。
upper_bound算法返回一个非递减序列[first, last)中的第一个大于val的位置。
12、C++ to_string 和 stoi/stol/stoll 以及 atoi
stringstream C\C++字符与数字的转换_会飞的码的博客-优快云博客_c++ 字符转数字
13、蓄水池采样算法(Reservoir Sampling)原理,证明和代码
蓄水池采样算法(Reservoir Sampling)原理,证明和代码_anshuai_aw1的博客-优快云博客_蓄水池抽样算法
14、C++随机数rand() 和 srand() C/C++ 生成[X,Y]内的随机数_蓝蓝223的博客-优快云博客_c++生成随机
15、经典的 Fisher-Yates 洗牌算法