从零单排c++ primer(11)

(1)无序关联容器使用哈希函数。
(2)在某些应用中,维护元素的序的代价非常高昂,此时无序容器也很有用。
(3)无序容器的性能依赖于哈希函数的质量和桶的数量和大小。
(4)无序容器在存储上组织为一组桶,每个桶保存零个或多个元素,使用一个哈希函数将元素映射到桶。
(5)对于相同的参数,哈希函数必须总是产生相同的结果。
(6)静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量。
(7)栈内存用来保存定义在函数内的非static对象。
(8)分配在静态或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在,static对象在使用之前分配,在程序结束时销毁。
(9)除了静态内存和栈内存,每个程序还拥有一个内存池,这部分内存被称作自由空间或堆。程序用堆来存储动态分配的对象,即那些在程序运行时分配的对象。
(10)虽然使用动态内存有时是必要的,但是总所周知,正确的管理动态内存是非常棘手的。
(11)在c++中,动态内存的管理是通过一对运算符来完成的:new和delete。
(12)使用动态内存的一个常见原因是允许多个对象共享相同的状态。
(13)在自由空间分配的内存是无名的,因此new无法为其分配的对象命名,而是返回一个指向该对象的指针。
(14)出于与变量初始化相同的原因,对动态分配的对象进行初始化通常是个好主意。
(15)传递给delete的指针必须是指向动态分配的内存,或者是一个空指针,释放一块并非new分配的内存,或者将相同的指针释放多次,其行为是未定义的。
(16)由内置指针(非智能指针)管理的动态内存在被显式释放前一直都会存在。
(17)悬空指针,指向一块曾经保存数据对象但现在已经无效的内存的指针。
(18)使用一个内置指针来访问一个智能指针所负责的对象时很危险的,因为我们无法知道对象何时会被销毁。
(19)get用来将指针的访问权限传递给代码,你只由在确定代码不会delete的指针的情况下才能使用get。
(20)永远不要用get初始化另一个智能指针或者为另一个智能指针赋值。

你可能感兴趣的:(C++,程序员,学习,语言)