C++编程常用知识点

在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的博客-CSDN博客_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的博客-CSDN博客

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++字符与数字的转换_会飞的码的博客-CSDN博客_c++ 字符转数字

13、蓄水池采样算法(Reservoir Sampling)原理,证明和代码

蓄水池采样算法(Reservoir Sampling)原理,证明和代码_anshuai_aw1的博客-CSDN博客_蓄水池抽样算法

14、C++随机数rand() 和 srand() C/C++ 生成[X,Y]内的随机数_蓝蓝223的博客-CSDN博客_c++生成随机

15、经典的 Fisher-Yates 洗牌算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值