STL
文章平均质量分 70
Persistenter
这个作者很懒,什么都没留下…
展开
-
STL特殊容器之stack
stack是一种先进后出(FILO)的数据结构,它只有一个出口。stack允许新增元素、移除元素、取得栈顶元素,除了栈顶元素,取不到其他元素,即栈不允许遍历,也不提供迭代器。deque作为stack的底层容器,可以轻易的形成一个stack。因此,SGI STL以deque作为缺省情况下的stack的底部结构。所以stack也是容器配接器。使用stack之前须先含入头文件<stack>。原创 2017-03-28 09:24:39 · 260 阅读 · 0 评论 -
STL之String详解
表头文件<string>定义了所有字符串型别和函数。 字符串中的操作函数 操作函数 效果 =,assign() 赋以新值 swap() 交换两个字符串的内容 +=, append(),push_back() 添加字符 insert() 插入字符 erase() 删除字符 clear() 移除全部字符 resize() 改变字符数量原创 2017-04-02 16:29:44 · 2033 阅读 · 0 评论 -
STL序列式容器之list
list使用一个双向链表来管理数据。使用list必须含入头文件<list>,其型别定义如下:namespace std{ template <class T, class Allocator = allocator<T> > class list;}list不支持随机存取,所以既不提供下标操作符,也不提供at()。list相较于vector的好处原创 2017-03-28 19:49:13 · 375 阅读 · 0 评论 -
STL关联式容器之set和multiset
set和multiset是STL里面的关联式容器,对其元素而言,实值和键值是统一的。元素会根据特定的排序准则自动排序,默认为升序排列。set和multiset中不能通过迭代器改变元素值,因为元素值即是键值,会破坏其组织。要改变元素值,必须先删除旧元素,再插入新元素。其底层实现均采用红黑树数据结构。set和multiset的不同点是set不允许元素值重复,而multiset允许出现重复元素。使原创 2017-03-27 15:53:00 · 455 阅读 · 0 评论 -
STL关联式容器之map和multimap
map和multimap是STL里面的关联式容器,map的特性是所有元素会根据元素的键值被自动排序,map的所有元素都是pair,同时拥有实值和键值。pair的第一元素被视为键值,第二元素被视为实值。map不允许两个元素拥有相同的键值。下面是<stl_pair.h>中pair的定义:template <class T1, class T2>struct pair{ typedef原创 2017-03-30 11:43:08 · 2054 阅读 · 0 评论 -
STL特殊容器之bitset
bitset构造出一个内含位(bit)或布尔(bool)值且大小固定的array。不能改变bitset内位的数量。这个参数由template参数决定的。如果需要一个可变长度的位容器,考虑使用vector<bool>。Class bitset定义于头文件<bitset>中,有一个template参数用来指定位的数量:namespace std { template <size_t Bi原创 2017-03-29 15:11:40 · 1845 阅读 · 0 评论 -
STL无序容器之unordered_map
一、概述头文件<unordered_map>定义了unordered_map和unordered_multimap容器。这个是C++11新特性,以前的编译器不支持。unordered_map类模版定义如下:template < class Key, // unordered_map::key_type cla原创 2017-03-31 15:55:45 · 4839 阅读 · 1 评论 -
STL之hashtable
一、hashtable概述hash table可提供对于任何有名项的存取和删除操作。由于操作对象是有名项,所以hashtable可以被视为一种字典结构。这种结构的用意在于提供常数时间的基本操作。 常用的hash函数有取余函数等,而解决hash冲突的方法有线性探测法、二次探测法、开链法。线性探测法:当hash函数计算出元素的存放位置时,若该位置已有元素,则尝试将元素放在该元素的下一位置,若仍被占,继原创 2017-04-07 15:25:43 · 608 阅读 · 0 评论 -
STL序列式容器之vector
vector构造出一个动态数组,本身是将元素置于动态数组中加以管理的抽象概念。使用vector之前必须含入头文件<vector>,vector是一个定义于原创 2017-03-28 21:54:13 · 300 阅读 · 0 评论 -
STL序列式容器之deque
deque是一种双向开口的连续线性空间,所谓双向是指可以在首尾两端进行插入和删除,逻辑结构如图所示:deque和vector最大的差异在于deque可以在常数时间内对头端进行插入和删除操作,而且deque没有容量的概念,随时可以增加一段新的空间并链接起来。除非必要,应尽量使用vector而非deque。对deque进行排序操作为了提高效率可以先将deque复制到vector中,将vector原创 2017-03-28 15:00:06 · 336 阅读 · 0 评论 -
STL特殊容器之queue
queue是一种先进先出(FIFO)的数据结构,在队头取出元素,队尾加入元素,除此之外没有其他办法存取queue的元素,即queue不允许遍历操作,所以也不提供迭代器。推入queue的操作为push,推出操作为pop。以既有容器作为底层结构,改变接口符合FIFO原则即可。SGI STL以deque作为缺省情况下的queue底部结构原创 2017-03-27 17:04:37 · 428 阅读 · 0 评论 -
STL特殊容器之priority_queue
priority_queue是一个拥有权值(优先级)观念的queue,除此之外和queue无异。priority_queue内的元素并非依照被推入的次序排序,而是按照元素的权值排列。权值最高者排列在最前面。缺省情况下priority_queue使用max-heap实现的,max-heap是一个以vector表现的完全二叉树。max-heap可以满足priority_queue所需的“按照权值原创 2017-03-27 18:49:54 · 507 阅读 · 0 评论 -
STL之仿函数
一、概述仿函数是早期命名,C++标准后采用新名称函数对象。函数对象即指具有函数特质的对象,即一个行为类似函数的对象。通过在仿函数对象后面加上( )实现函数调用,示例程序如下:#include<functional>#include<iostream>using namespace std;int main(){ greater<int> ig; cout << boolalph原创 2017-04-11 17:04:11 · 714 阅读 · 0 评论