摘要:
1、双向链表简介 list 是顺序容器的一种。list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素。在 list 容器中,在已经定位到要增删元素的位置的情况下,增删元素能在常数时间内完成。list 容器不支持根 阅读全文
摘要:
1、简介 vector 是顺序容器的一种。vector 是可变长的动态数组,支持随机访问迭代器,所有 STL 算法都能对 vector 进行操作。要使用 vector,需要包含头文件 vector。 在 vector 容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况下 阅读全文
摘要:
1、简介 stack 是容器适配器的一种。要使用 stack,必须包含头文件 <stack>。 stack就是“栈”。栈是一种后进先出的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素 阅读全文
摘要:
1、简介 STL 中的容器适配器有 stack、queue、priority_queue 三种。它们都是在顺序容器的基础上实现的,屏蔽了顺序容器的一部分功能,突出或增加了另外一些功能。 容器适配器都有以下三个成员函数: push:添加一个元素。 top:返回顶部(对 stack 而言)或队头(对 q 阅读全文
摘要:
1、map简介 map 是关联容器的一种,map 的每个元素都分为关键字和值两部分,容器中的元素是按关键字排序的,并且不允许有多个元素的关键字相同。 注意:不能直接修改 map 容器中的关键字。因为 map 中的元素是按照关键字排序的,当关键字被修改后,容器并不会自动重新调整顺序,于是容器的有序性就 阅读全文
摘要:
1、简介 set 是关联容器的一种,是排序好的集合(元素已经进行了排序)。set 和 multiset 类似,它和 multiset 的差别在于 set 中不能有重复的元素。multiset 的成员函数 set 中也都有。 不能直接修改 set 容器中元素的值。因为元素被修改后,容器并不会自动重新调 阅读全文
摘要:
1、简介 queue 和 priority_queue 都是容器适配器,要使用它们,必须包含头文件 <queue>。 2、queue queue 就是“队列”。队列是先进先出的,和排队类似。队头的访问和删除操作只能在队头进行,添加操作只能在队尾进行。不能访问队列中间的元素。queue 可以用 lis 阅读全文
摘要:
1、简介 容器(container)用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在 STL 中都被实现为容器。程序员使用容器时,就是将容器类模板实例化为容器类,需要指明容器中存放的元素是什么类型的。 容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实 阅读全文
摘要:
1、计算方法 假设计算机运行一行基础代码需要执行一次运算。 int main(int argc, char** argv) { printf("Hello, World!\n"); // 需要执行 1 次 return 0; // 需要执行 1 次}总共执行2次。时间复杂度为O(1). 把算法需要执 阅读全文
摘要:
1、简介 在 STL 中,算法就是函数模板。STL 中的算法大多数是用来对容器进行操作的,如排序、 查找等。大部分算法都是在头文件 <algorithm> 中定义的,还有些算法用于数值处理,定义在头文件 <numeric> 中。 STL 提供能在各种容器中通用的算法(大约有70种),如插入、删除、查 阅读全文
摘要:
1、简介 将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++ 为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。 强制类型转换是有一定风险的 阅读全文
摘要:
1、简介 string 类是 STL 中 basic_string 模板实例化得到的模板类。其定义如下: typedef basic_string <char> string; basic_string 此处可以不必深究。 string 类的成员函数有很多,同一个名字的函数也常会有五六个重载的版本。 阅读全文
摘要:
1、简介 __declspec是一个Microsoft Visual C++特定的编译器属性开关。括号中指明的是哪一个属性生效。关于__declspec的其他属性可以使用' __declspec'搜索MSDN进行查看。 selectany可以在.h文件中初始化一个全局变量而不是只能放在.cpp中。如 阅读全文
摘要:
1、使用场景 健壮性的分配方式 直接使用new (std::throw) xxx,判断NULL即可 普通的new若失败需要抛出异常(异常的类型std::bad_alloc),需要try块,若内存不足,再使用try也是浪费内存,也不会执行其后的if判断是否为NULL;new (std::throw) 阅读全文
摘要:
以VS2008为例。 1、新建安装部署项目 打开VS,在解决方案处右键点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定. 2、开始制作 2.1 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进 阅读全文