摘要:
Vim是从vi发展出来的一个文本编辑器,是Linux后端开发人员必会工具之一,被广大码农戏称为编辑器之神(神之编辑器是Emacs,笔者没用过,看起来段位比Vim更高)。本文简单介绍Vim中不同的模式以及每个模式下的高频命令,希望能够引领初学者快速入门。 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 functional functional.h stl_function.h 2 一元函数对象 一元函数对象,是指这类函数对象只接受一个参数并返回一个参数。 unary_function为STL中所有一元函数对象的基类。它定义了一元函数对 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 STL中实现了一些跟容器相关的一些算法。这里介绍algorithm头文件中一些有意思的算法实现。 1 相关头文件 stl_algo.h stl_algobase.h stl_numeric.h 2 find algorithm头文件中定义的find函数可 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 bitset 2 bitset bitset中STL中用于表示位图的容器,它支持读写特定bit、从整数或字符串生成bitset对象。bitset大小通过模板参数指定,一旦编译器确定便无法变更,这一点与vector<bool>有差异。 2. 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 tree.h stl_tree.h map.h stl_map.h set.h stl_set.h 2 红黑树的实现 首先重温下红黑树的定义。同时满足以下条件的二叉树才可称之为红黑树: 所有节点非红即黑 根节点为红色。 所有叶子节点为黑色 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 traits(译作萃取)是C++中一种特殊的编程技法,它是模板元编程最直接的用例之一。通过traits,可以抽取模板入参类型的各种属性。接下来我们通过STL中最常见的几种traits举例说明。 1 __type_traits:trivial判定 __ty 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 iterator iterator.h stl_iterator.h stl_iterator_base.h 2 输入迭代器 2.1 iterator的种类 在STL中,迭代器分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 deque相关头文件 deque deque.h stl_deque.h 2 deque的数据结构 deque为双向队列,同时支持从队首和队尾插入和弹出值。其数据结构分为两部分,如下图所示: 连续缓冲区_M_map, 元素类型为——Tp*。如果元素值 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 相关文件 list list.h stl_list.h 2 链表节点结构 基类_List_node_base只有_M_prev, _M_prev,分别指向前置节点和后继节点,由此看出STL list是双向链表(首节点为空) struct _List_ 阅读全文
摘要:
更多精彩内容,请关注微信公众号:后端技术小屋 1 string的数据结构 从定义可知, string其实是base_string的特化类,string使用默认的内存分配器__STL_DEFAULT_ALLOCATOR(_CharT)。 template <class _CharT, class _T 阅读全文