C++STL
文章平均质量分 62
xiaowei_nbu
Your story may not have a such happy beginning, but that doesn't make who
you are. It is the rest of your story,who you choose to be.
展开
-
C++STL之双端队列容器
deque双端队列容器与vector很类似,采用线性表顺序存储结构。但与vector区别,deque采用分块的线性存储结构来存储数据,每块的大小一般为512B,将之称为deque块,所有的deque块使用一个map块进行管理,每个map数据项记录各个deque块的首地址,这样的话,deque块在头部和尾部都可以插入和删除。而不需要移动任何元素,而不需要移动其他元素(使用push_back()方法在尾原创 2015-10-18 15:18:11 · 10625 阅读 · 5 评论 -
C++STL之堆栈容器
stack堆栈是一个后进先出的线性表,插入和删除都只能在表一端进行,插入元素的一端成为栈顶(stack top),而另一端则称为栈底(stack bottom),插入元素称为入栈(push),删除元素称为出栈或弹栈(pop)*堆栈的使用方法只提供了入栈,出栈,栈顶元素访问和判断是否为空等。#include#includeusing namespace std;int main(原创 2015-10-22 15:07:34 · 964 阅读 · 0 评论 -
C++STL之multimap多重映照容器
multimap与map基本相似,两者的区别在与,multimap允许插入重复的键值。由于允许插入重复的减值,所以multimap与map的元素插入、删除、查找有一些不同。*multimap对象的创建、元素的插入可以插入重复的键值#pragma warning(disable:4786)#include#include#includeusing namespace std;原创 2015-10-14 23:42:10 · 421 阅读 · 0 评论 -
1037. Magic Coupon
1037. Magic Coupon (25)时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueThe magic shop in Mars is offering some magic原创 2015-10-28 14:37:34 · 328 阅读 · 0 评论 -
C++STL之map映照容器
map映照容器的元素数据包含两个部分:一个键值;一个映照的数据;组成的,键值和映照数据之间具有一一对应的关系。map映照容器的数据结构也是采用红黑树来实现的,请注意:不允许插入元素的键值相同。比较函数所比较的也只是键值之间的比较,在检索的时候,通俗的说查找的时候,还是通过键值进行查找。map的用法和set及其相似,如果你之前的都看了,相信你可以猜到map有哪些方法以及操作了原创 2015-10-13 19:44:57 · 341 阅读 · 0 评论 -
C++STL之string下
接着string上,接着说string剩下的部分。*string对象的比较string对象可以使用compare()方法与其他字符串想比较。假设字符串A和B,A如果比B大,则返回1,如果A比B小,则返回-1,如果A和B相同,则返回0#include#includeusing namespace std;int main() { string s = "cat dog cat原创 2015-10-12 23:09:32 · 353 阅读 · 0 评论 -
C++STL之Set集合容器
Set集合容器实现了红黑树的平衡二叉树的数据结构,在插入元素时候,它会自动的进行调整二叉树的排列,把该元素放到适当的位置,以保证每个子树根节点的键值大于左子树所有的键值,小于右子树所有节点的键值;另外,还要确保根节点左子树的高度与右子树的高度相等,这样,二叉树的高度最小,从而达到检索的速度最快注意:不会插入相同的键值,若存在相同的键值,第二次插入忽略。原创 2015-10-12 12:18:14 · 958 阅读 · 0 评论 -
C++STL之multiset多重集合容器
上一篇我们写到了set,但是set集合是不允许出现带有重复的键值的,那么这篇就说说如果存在键值重复的节点怎么处理multiset与set一样,唯一不同的地方就是multiset允许重复的键值插入 ,但是set不允许,就这个差别!multiset也需要声明头文件,#include,由于它包含了重复的键值元素,所以,在进行插入,删除,查找元素的会和set有一些不同的地方。#incl原创 2015-10-12 19:43:41 · 520 阅读 · 0 评论 -
C++STL之string上
因为string部分的知识点有很多,所以以下分为上、下两部分来介绍string此外,string中的一些操作和vector中的操作有很多相似的方法,所以在string中不再联系介绍,此外,下部分比较重要。C++STL提供了string基本字符串系列容器来处理字符串,可以把string理解成字符串类也可以。通过上、下对string有个重新的认识,慢慢掌握之后你会发现用起来十分的方便。st原创 2015-10-10 23:11:22 · 413 阅读 · 0 评论 -
C++STL之组件
STL提供三种类型的组件:容器、迭代器和算法容器的主要有两类:顺序容器和关联容器,顺序容器(vector,list,deque,和string等)是一系列元素的有序集合,关联容器(set,multiset,map和multimap)包含查找元素的键值。迭代器的作用就是遍历容器。STL算法库包含四类算法:排序算法、不可变序算法、变序性算法和数值算法。C原创 2015-10-09 16:56:26 · 409 阅读 · 0 评论 -
C++STL之vector
vector容器可以像数组那样进行随机的访问,还可以在尾部进行插入元素,是一种简单高效的容器,完全可以替换掉数组。vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的整理所占用的内存空间。vector容器的下标也是从0开始计数的。vector容器的定义:1. 可以事先固定大小,事后可以随时间调整大小。2. 事先不定义,随时使用push.back()方法从尾部扩张原创 2015-10-09 17:24:38 · 462 阅读 · 1 评论 -
C++STL之priority_queue优先队列容器
特征:就是队列中最大元素总是在队首*优先队列使用方法#include#includeusing namespace std;int main(){ priority_queue pq; pq.push(2); pq.push(0); pq.push(1); pq.push(5); cout<<pq.size()<<endl; while(pq.empty() !原创 2015-10-23 12:39:41 · 523 阅读 · 0 评论 -
C++STL之queue队列容器
queue队列容器是一个先进先出的线性表,元素的插入只能在队尾,元素的删除只能在队头。#include#includeusing namespace std;int main(){ queue q; q.push(1); q.push(2); q.push(3); q.push(9); cout<<q.size()<<endl; cout<<q.empty()<<e原创 2015-10-22 15:18:01 · 498 阅读 · 0 评论 -
C++STL之bitset位集合容器
bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,有节省内存空间,下面水泥bitset的存储示意图,它的19个元素只使用了两个字符的空间。 方法b.any() b中是否存在置为1的二进制位?b.none() b中不存在置为1的二进制位吗?b.count()原创 2015-10-22 15:04:08 · 524 阅读 · 0 评论 -
C++STL之list双向链表容器
list容器实现了双向链表的数据结构,数据元素是通过链表指针串成逻辑意义上的线性表,选择对链表的任一位置的元素进行插入,删除和查找都是非常高效的。 list的每个节点有三个域:前驱元素指针域,数据域,后继元素指针域,前驱元素的指针域保存了前驱元素的首地址;数据域则是本节点的数据,后继元素指针域则保存了后继元素的首地址。 list的头节点的前驱元素指针域保存的是链表中尾元素的首地址,而list原创 2015-10-19 12:44:23 · 609 阅读 · 0 评论 -
C/C++ 连续读写多个文件
本文是为了解决多个文件的读写问题: 问题:在我的E盘下gene_info有300个.dat文件。那么我如何把这300个.dat文件中的内容读取出来呢? 每个.dat文件中的内容就是这样的字符串信息。我们不知道每个文件中有多少个字符串。我们可以知道的就是每个文件中有一些字符串信息,仅此而已。 代码:我们将300个.dat文件中的字符串读到rs中,并打印输出。至于写进多个文件,就是注释掉的部分原创 2016-09-22 15:16:45 · 15233 阅读 · 0 评论