STL
文章平均质量分 57
半只因
这个作者很懒,什么都没留下…
展开
-
STL 关联容器
1. 映射最大的优点就是找东西快,检索效率高,因为内部的平衡有序二叉树(红黑树)。从红黑树的任何一个节点往下看,左右子树的层级可以差一层但不能超过一层。找1的话,从根节点往下看,1小于3,找左子树,1又小于2,找左子树,找到1。只找了两次,这就不是线性级的效率,而是对数级别的效率,一砍砍一半。映射容器中的节点们的物理模型是红黑树,每个节点都是pair对象,pair对象有first和second构成。迭代器it中的当前指向,指向的是容器的节点,*it是节点的引用, 而映射容器中的每个节原创 2021-03-02 11:16:40 · 145 阅读 · 0 评论 -
STL 适配器容器 之 栈、队列、优先队列
1. 栈底层容器可以是 vector, deque, list 等成员函数中,左边都是栈提供的成员,右边调的是底层容器提供的成员函数。1.1 栈的底层实现屏蔽调底层容器的头部的添加/删除就改造成了栈class D = deque<T>, 代表缺省的底层容器是deque, 向栈里添加元素其实是添加到双端队列当中了。#include <iostream>#include <list>#include <vector>#include原创 2021-03-01 20:39:59 · 131 阅读 · 0 评论 -
STL 线性容器 之 双端队列、列表
1. 双端队列和向量的差别2. 列表在任何位置添加、删除数据都很方便,但不支持下标访问这里的列表就是之前这篇博客写的链表,下面利用<list>实现下几个那篇博客里没有实现的功能unique : 针对的是连续重复出现的数据排序:之前那个全局的sort可以对链表进行的排序,只不过需要交换链表中数据的位置。在连续的数据存储区,进行数据的排序,必须要交换数据的位置。链表排序也可以交换数据的位置,但还有更简单的做法就是更改指针的指向。所有链表提供了两个自己的排序成员函数,并且没有卡范原创 2021-03-01 18:29:53 · 140 阅读 · 0 评论 -
STL 线性容器 之 向量容器、向量容器迭代器
1. 成员函数容量就是最多可以放多少个。容量反应的是 向量容器维护了多少内存,大小反应的是已经占据了多少内存。向量只提供了尾部增加和删除2. 初始化给向量后面添加新元素时,如果向量维护的内存空间满载,而且其后的内存空间也已经被占用,那么就会自动开辟新的足够大的连续内存空间,把原来的数据拷贝过来,然后释放掉原内存空间。3. 迭代器的使用...原创 2021-03-01 12:11:25 · 179 阅读 · 0 评论 -
STL 标准模板库概述
1. STL概念和作用2. 数组结构和链表结构3. 十大容器概述4. 迭代器原创 2021-02-27 18:26:15 · 119 阅读 · 0 评论 -
STL 利用模板自制链表容器
#include <stdexcept>using namespace std;// list<T>代表双向链表类,链表里的每个节点是T类型的数据template <class T> class list {public: // 缺省构造, 空链表 list():m_head(NULL), m_tail(NULL){} // 拷贝构造, 用一个存在的链表拷贝构造一个新的链表 list(list const that):m_head(原创 2021-02-26 23:21:46 · 261 阅读 · 0 评论 -
STL 模板典型错误
1. 嵌套依赖#include <iostream>using namespace std;class A{public: class B{ public: void foo(){ cout << "zhe e xin" << endl; } };};// 函数模板template<class T> void Func(){ // A::B b; // 嵌套原创 2021-02-23 22:12:38 · 288 阅读 · 0 评论 -
STL 类模板的特化、类型形参缺省、数值形模板参数、模板技巧
1. 全局特化2. 局部特化3. 类型形参缺省4. 数值形的模板参数5. 模板技巧原创 2021-02-23 15:55:12 · 384 阅读 · 0 评论 -
STL 类模板
1. 类模板的声明2. 类模板的使用3. 类模板的静态成员4. 类模板的递归实例化原创 2021-02-22 22:19:56 · 231 阅读 · 0 评论 -
STL 函数模板
函数模板并非真正的函数1. 函数模板的定义<> 表示类型参数表2. 函数模板的使用3. 函数模板的分析4. 实例化函数模板的条件原创 2021-02-20 17:38:05 · 213 阅读 · 0 评论 -
STL 模板起源
1. C++ 为静态类型语言虽然类型安全(可以指定类型)由于数据类型的不一致,把近乎相同的函数写了三遍2. 宏可以摆脱数据类型的限制蓝色部分就是预编译时做的纯文本替换,但cx和cy代表的是数组首元素的地址, 而不是比较“world” 和 “hello”首字母的assic值结合上面两个程序的优点, 搞一个类型安全,代码通用的函数框架3. 利用宏构建通用函数框架其实本质就是利用宏让与编译器来实现一些函数, 而不用手动去写#include <iostream>原创 2021-02-19 17:25:14 · 187 阅读 · 0 评论