Monthly Archives: March 2021

C++语言程序设计之智能指针基本规范和陷阱

智能指针可以提供对动态分配的内存安全而又方便的管理,但这建立在正确使用的前提下。为了正确使用智能指针,我们必须坚持一些基本规范:

1、不使用相同的内置指针值初始化(或reset)多个智能指针。
2、不delete get()返回的指针。
3、不使用get()初始化或reset另一个智能指针。
4、如果你使用get()返回的指针,记住当最后一个对应的智能指针销毁后,你的指针就变为无效了。
5、如果你使用智能指针管理的资源不是new分配的内存,记住传递给它一个删除器。

C++语言程序设计之map和unordered_map的下标操作

在C++语言中,对于一个map使用下标操作,其行为与数组或vector上的下标操作很不相同:使用一个不在容器中的关键字作为下标,会添加一个具有此关键字的元素到map中。

一、c[k]
返回关键字为k的元素;如果k不在c中,添加一个关键字为k的元素,对其进行值初始化。

二、c.at(k)
访问关键字为k的元素,带参数检查;若k不在c中,抛出一个out_of_range异常。