首先,我们对术语“string”的定义是:C++标准程序库中某个字符串类型(string或wstring)的对象。至于一般字符串,也就是char* 或const char*,我们用术语“C-string”来表示。
继续阅读“C++标准程序库之string”
分类:STL
C++标准程序库之map,multimap
map和multimap将key/value pair当做元素,进行管理。它们根据key的排序准则自动将元素排序。multimap允许重复元素,map不允许。
继续阅读“C++标准程序库之map,multimap”
C++标准程序库之set,multiset
set和multiset会根据特定的排序准则,自动将元素排序。两者的不同之处在于multiset允许元素重复而set不允许。
继续阅读“C++标准程序库之set,multiset”
C++标准程序库之list
list使用一个doubly linked list(双向链表)来管理元素。使用时必须包含头文件:<list>。其中list类型是定义于namespace中,是个class template:
namespace std {
继续阅读“C++标准程序库之list”
C++标准程序库之deque
容器deque(发音为”deck”)和vector非常相似。它也采用动态数组来管理元素,提供随机存取,并有着和vector几乎一模一样的接口。不同的是deque的动态数组头尾都开放,能在头尾两端进行快速安插和删除。
继续阅读“C++标准程序库之deque”
C++标准程序库之vector
本人之前对STL的学习主要来自C++ Primer一书,随着时间的推进,对标准模板库的一些知识有些淡忘,遂再次对STL容器部分加以总结,用以温习。
继续阅读“C++标准程序库之vector”
STL源码之copy算法深入学习
copy算法可将输入区间[first, last)内的元素复制到输出区间[result, result+(last-first))内。也就是说,它会执行赋值操作*result = *first, *(result+1) = *(first+1), …依次类推。返回一个迭代器:result+(last-first))。
继续阅读“STL源码之copy算法深入学习”
STL源码之queue深入学习
queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素。
继续阅读“STL源码之queue深入学习”
STL源码之stack深入学习
学完STL中vector, list, deque这三个较为复杂序列式容器之后,序列式容器中还剩下stack, queue以及priority-queue三部分内容。我们前面提及到,stack和queue由于是以deque为底部结构,技术上被归类为一种配接器(adapter)。
继续阅读“STL源码之stack深入学习”
STL源码之deque容器深入学习
vector和deque都是连续线性空间,这往往给我们造成一种假设,认为vector和deque的区别仅仅在于一个单向一个双向。但是剖开它们的源码分析,会发现deque和vector的内部实现机制迥然不同,并且deque要复杂的多。
继续阅读“STL源码之deque容器深入学习”