互联网网站开发的未来方向优化落实防控措施
文章目录
- 1. 基本概念
- 2. 容器
- 2.1. 容器的分类
- 2.2. vector
- 2.2.1. 构造vector对象
- 2.2.2. vector的赋值
1. 基本概念
- STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称,现在已经成为C++标准库的重要组成部分。
- STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。
- STL实现了数据结构和算法的分离。
- STL具有高可重用性、高性能和高移植性的特点。
- 高可重用性:STL中几乎所有的代码都采用了类模板和函数模板的方式实现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
- 高性能:STL采用了高效的数据结构和算法。
- 高移植性:STL是C++标准库的一部分,可以方便地跨项目、跨平台移植。
2. 容器
2.1. 容器的分类
- 序列式容器
- 每个元素都有固定位置,元素的位置取决于插入时机和地点,和元素值无关。
- vector、deque、list、stack、queue
- 关联式容器
- 元素位置取决于容器特定的排序准则,和插入顺序无关。
- set、multiset、map、multimap
- 常用容器列表
容器名 描述 头文件 向量(vector) 也称为动态数组,在内存中连续存储元素。它具有自动扩展大小的能力,支持随机访问和快速在末尾插入/删除元素。 <vector>
列表(list) 也称为链表,由一系列节点链接而成。每个节点存储元素和指向下一个节点的引用。列表支持在任意位置插入/删除元素,但访问和搜索元素的性能较低。 <list>
双队列(deque) 双向队列是一种特殊的队列,允许在两端进行插入和删除操作。它具有向量和列表的特性,可以高效地在队列的任一端添加或删除元素。 <deque>
集合(set) 集合是一组唯一元素的容器,不允许重复。它提供了高效的搜索和插入操作,但不保持元素的顺序。 <set>
多重集合(multiset) 多重集合类似于集合,但允许元素重复。 <set>
栈(stack) 栈是一种后进先出(LIFO)的数据结构,类似于一堆盘子。元素只能从栈顶插入和删除。 <stack>
队列(queue) 队列是一种先进先出(FIFO)的数据结构,类似于排队。元素只能从队列的一端插入,另一端删除。 <queue>
优先队列(priority_queue) 优先队列是一种特殊的队列,元素按照优先级顺序进行插入和删除。具有最高优先级的元素始终排在队列的前面。 <queue>
映射(map) 映射是一种键值对(Key-Value)的数据结构,每个键关联一个值。它提供了高效的键值查找,常见操作包括插入、删除和修改键值对。 <map>
多重映射(multimap) 多重映射类似于映射,但允许多个键关联相同的值。 <map>
2.2. vector
2.2.1. 构造vector对象
- 默认构造
vector<T> vec; // T替换为要存储的数据的类型
- 带参构造
// 构造长度为n的vector对象 vector<T> vec(n);// 构造长度为n、初始值为val的vector对象 vector<T> vec(n, val); // 用构造好的vector对象构造新的vector对象 vector<T> vec1(n, val); vector<T> vec2(vec1); vector<T> vec2(vec1.begin(), vec1.end());// 用数组构造vector对象 T arr[n] = {0}; vector<T> vec(arr, arr + n);
2.2.2. vector的赋值