
STL学习笔记
专门详细介绍C++ STL,重点在于容器、迭代器和算法。
Sin_Geek
Lovelife
展开
-
STL学习笔记— —算法
简介算法库定义了用来实现各种功能的函数(如查找、排序、计数、修改等),都是针对指定范围内元素的操作。需要注意的是,元素的范围以 [first, last) 的形式指定,其中 last 指的是范围内最后一个元素的下一个元素。在头文件 <algorithm>中定义。非变动性算法for_each() //对每个元素执行某个操作 count() //返回某元素的数量count_if() //返回满足特定条件原创 2016-05-17 15:24:08 · 1094 阅读 · 0 评论 -
STL学习笔记— —迭代器
头文件所有的容器都定义了自己的迭代器类型,所以一般情况下,不需要再自己添加迭代器头文件。但是如果要使用一些特殊的迭代器,如反向迭代器,或者一些迭代器辅助函数,那么就需要添加头文件<iterator>。迭代器类型 类型 能力 提供者 输入迭代器 一次向前读取 istream 输出迭代器 向前写入 ostream,inserter 前向迭代器 向前读取和写入原创 2016-05-06 18:09:14 · 1414 阅读 · 0 评论 -
STL学习笔记— —特殊容器priority_queue
简介在头文件<queue> 中定义namespace std { template <typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type>> class priority_q原创 2016-05-04 17:41:47 · 5266 阅读 · 0 评论 -
STL学习笔记— —特殊容器queue
简介在头文件<queue> 中定义namespace std { template <typename T, typename Container = deque<T>> class queue;}queue就是数据结构里队列的实现,先进先出。定义中的第二个参数用来定义queue内部存放元素的实际容器,可以是任何序列式容器,默认容器为deque。实际上queue也只是很单纯地把各项操作转原创 2016-05-04 16:45:13 · 1623 阅读 · 0 评论 -
STL学习笔记— —特殊容器stack
简介在头文件<stack> 中定义namespace std { template <typename T, typename Container = deque<T>> class stack;}stack就是数据结构里堆栈的实现,后进先出。定义中的第二个参数用来定义stack内部存放元素的实际容器,可以是任何序列式容器,默认容器为deque,是因为其删除元素会自动释放内存,还有不必在原创 2016-05-04 16:00:29 · 2962 阅读 · 0 评论 -
STL学习笔记— —容器的选用
默认情况下,选用vector,内部数据结构最简单,允许随机存取。如果经常要在序列头部和尾部插入和删除元素,应该使用deque。如果希望元素被删除时,容器能自动缩减内存,那么也要选deque。此外,由于vector通常采用一个内存块存放元素,而deque采用多个内存块,后者可包含更多元素。如果需要经常在容器中段执行元素的插入、删除或移动,可考虑list。list提供特殊成员函数,可在常数时间将元素从A原创 2016-04-10 14:08:22 · 2571 阅读 · 0 评论 -
STL学习笔记— —无序容器(Unordered Container)
简介在头文件<unordered_set>和<unordered_Unord> 中定义namespace std { template <typename T, typename Hash = hash<T>, typename EqPred = equal_to<T>, typename Allocator = al原创 2016-04-10 13:20:10 · 4357 阅读 · 0 评论 -
STL学习笔记— —容器map和multimap
简介在头文件<map> 中定义namespace std { template <typename Key, typename T, typename Compare = less<Key>, typename Allocator = allocator<pair<const Key,T> > > class map;原创 2016-04-09 21:43:07 · 5140 阅读 · 0 评论 -
STL学习笔记— —容器set和multiset
简介在头文件<setr> 中定义namespace std { template <typename T, typename Compare = less<T>, typename Allocator = allocator<T> > class set; template <typename T,原创 2016-04-08 19:01:02 · 3709 阅读 · 0 评论 -
STL学习笔记— —容器forward_list
简介在头文件 <forward_forward_list> 中定义namespace std { template <typename T, typename Allocator = allocator<T> >class forward_forward_list;}单向列表是一个容器,支持在其任何地方快速插入和删除元素,不支持快速的随机访问。它被实现为单向链表原创 2016-04-07 21:43:32 · 4946 阅读 · 0 评论 -
STL学习笔记— —容器list
简介在头文件 <list> 中定义namespace std { template <typename T, typename Allocator = allocator<T> >class list;}列表是一个容器,它支持任何位置的元素快速插入和删除,不支持快速的随机访问。它被实现为双向的链表。 与forward_list相比,它提供双向迭代的能力,但空间原创 2016-04-07 15:52:34 · 2719 阅读 · 0 评论 -
STL学习笔记— —容器deque
简介在头文件<deque> 中定义namespace std { template <typename T, typename Allocator = allocator<T> >class deque;}deque(双向队列)是一个索引序列的容器,允许对其头部和尾部进行快速的插入和删除。此外,在deque两端插入和删除并不会使其它元素的指针或引用失效。与deq原创 2016-04-07 15:05:54 · 2841 阅读 · 0 评论 -
STL学习笔记— —容器vector
简介在头文件<vector> 中定义namespace std { template <typename T, typename Allocator = allocator<T> >class vector;}vector 是一种序列容器,是对大小可变数组的封装。数组中的元素是连续存储的,所以除了能够通过迭代器访问外,还可以通过常规的指针偏移量访问元素。换句话说原创 2016-04-06 15:56:07 · 2214 阅读 · 0 评论 -
STL学习笔记— —容器array
简介array在头文件<array> 中定义namespace std{ template<class T, size_t N> class array;}array是固定元素个数的容器,与相应C数组的语义相同,容器array< T,N> 的大小等于相应C数组T[N]的大小,且性能也与C数组相同。但是它提供了C++标准容器的相应特性,如可以查询容器大小,支持复制,支持随机迭代原创 2016-04-05 20:25:23 · 3301 阅读 · 0 评论 -
STL学习笔记— —STL简述
STL(Standard Template Library)里有很多组成部分,但是主要有三个,容器、迭代器和算法原创 2016-04-03 14:29:48 · 1266 阅读 · 0 评论