一、顺序容器
vector、deque、list、forward_list、array、string
向容器中添加元素:insert、push_back、push_front、emplace
访问:[]、at
删除:pop_back()、pop_front()、erase()、clear()
改变大小:resize()
管理大小:
shrink_to_fit()退回不需要的(多余的)内存空间
capacity()最多可以保存的元素个数
二、string
string s(str,n)s是str前n个字符的拷贝
string s(str,pos2)s是str从下标pos2开始的字符拷贝
string s(s2,pos,len)s是str从下标pos开始len个字符的拷贝
s.substr(pos,n)返回从pos开始的n个字符的拷贝
to_string(number)将数字类型转换为string类型
stoi、stol、stoul、stoll、stoill(s,p,b)、stof、stod、stold(s,p)将string转换为数值类型
s1.merge(s2)将s2并入s1
s.remove(v)
s.reverse()反转
s.sort()
s.unique()
三、智能指针
shared_ptr允许多个指针指向同一个对象
unique_ptr独占所指的对象
防止抛异常:
int* p = new (nothrow) int;使用nothrow关键字
3.1、使用new和delete管理动态内存的3个主要问题
1、忘记delete
2、delete已经delete过的对象
3、同一块内存释放两次,或两个指针指向了同一块内存,其中一个已经delete了另一个又去delete。
shared_ptr只能直接初始化:shared_ptr<int> p(new int(1024));
使用reset将一个新的指针赋给shared_ptr:p.reset(new int(1024))
allocator 分配为构造的内存
四、自动类型转换
explicit用于抑制构造函数定义的隐式转换
visual studio调试
include : 放C/C++ 常规 附加包含目录
lib: 连接器 常规 附加库目录放lib的目录,连接器 常规 输入 附加依赖项放lib包的名称
dll : 配置属性 常规 输出目录以及配置属性 调试 工作目录
pdb调试文件加载路径设置:工具-》选项-》调试-》符号。选中符号服务器会从网上去找pdb文件,在此目录下缓存符号是用的本地的,一般为bin目录。
方法二在调试中加载:将代码打断点,调试-》窗口-》模块,对于没有加载的就右键点击加载
添加源代码:
右键解决方案-》属性-》调试源文件-》在包含源代码的目录空白处点击然后添加即可。
什么时候用函数断点比较方便?
当有多个重载函数时使用函数断点
多线程调试:在点击调试后点击全部中断,选择在源中显示线程可以看到当前线程运行的代码
并行堆栈可以看到每个线程运行的位置,在并行监视看变量的变化