【STL库学习】
文章平均质量分 73
张松超
这个作者很懒,什么都没留下…
展开
-
STL-vector容器用法
vector向量容器不仅可以像数组一样进行随机访问,还可以在尾部插入元素,还可以与map,pair等混合使用;是一种简单高效的容器。 1.创建vector对象; (1)不指定容器的元素个数; 如定义一个来存储整形的容器; vector v; (2)创建时指定容器大小; 如定义一个来存储10个double类型元素的容器; vector v(10); (3)创建原创 2017-04-12 15:23:52 · 491 阅读 · 0 评论 -
map, multimap和unordered_map, unordered_multimap
头文件为#include map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map关联容器也是采用红黑树来实现的,插入元素的键值不允许重复,比较函数只针对元素的键值进行比较, 元素的各项数据可以通过键值搜索出来,map里面原创 2017-11-30 18:27:23 · 1309 阅读 · 0 评论 -
pair,tuple
c++中的结构模板,定义在头文件中,提供一个包含2个数据成员的结构体模板。通过first,second访问2个成员,有 operator= 和 swap 方法。 简单模糊理解就是一个含有两个数据的结构体。 #include using namespace std; int main() { pair p;//建立一个pair元素 p.first = 1;p.second原创 2017-11-30 18:40:02 · 338 阅读 · 0 评论 -
deque
deque双端队列容器与vector一样,采用线性表顺序存储结构。但与vector唯一不同的是,deque采用分块的线性存储结构来存储数据,每块称为一个deque块,所有的deque块使用一个Map块进行管理每个Map数据项记录各个deque块的首地址。这样一来,deque头部和尾部都可插入和删除元素,而不需要移动其他元素。 头文件为 1.创建deque对象 deque d;/原创 2017-12-01 17:30:07 · 489 阅读 · 0 评论 -
string
c++中自带的字符串类string在处理字符串的时候会比字符数组方便很多,而且可以直接与其他嵌套使用;头文件为#include 1.创建对象和赋值 #include using namespace std; int main() { string str;//创建一个字符串变量str str="hello"; cout<<str<<endl; }#include using names原创 2017-04-12 18:57:01 · 988 阅读 · 0 评论 -
algorithm
1.求最大/小值:max/min(a,b)和max/min_element(begin,end,cmp)cmp为可选参数2.交换:swap(a,b)3.求上/下一个排列:prev/next_permutation(first,last,cmp)cmp为可选参数判断一个序列A是否是另一个序列B的一种排序:is_permutation(A.begin(), A.end(), B.begin(), B....原创 2018-01-10 21:51:37 · 351 阅读 · 0 评论 -
queue和priority_queue
queue队列容器是一个先进先出的线性存储表,元素的插入只能在队尾,元素的删除只能在队首。就好像排队一样。头文件为#include<queue>1.创建队列queue<int> q;//创建一个空队列 2.入队push()3.出队pop()4.读取队首元素front(),读取队尾元素back()5.判断队列是否为空empty()6.队列当前元素数目size()#includ...原创 2017-12-01 21:06:19 · 632 阅读 · 0 评论 -
重定义容器排序方式
这里只讲常用的两种方式(以优先队列和set作为示例): 1.在结构体内重载“ 讲常用的两种方式(以优先队列和set作为示例): 2.重载“()”运算符 #include using namespace std; struct node { int x,y,step; }; //重载括号 struct cmp1 { bool operator () (const node &原创 2017-12-02 18:32:15 · 303 阅读 · 0 评论 -
stack
stack堆栈是一个先进后出的线性表,插入元素只能在表的一段进行。插入元素的一端称为栈顶,另一端称为栈底。插入元素叫入栈,删除元素叫出栈。 头文件是 1.定义栈 stack s;2.出栈和入栈 s.pop();//出栈 s.push();//入栈 3.取栈顶元素 s.top(); //返回栈顶元素4.栈中元素数量 s.size();//返回栈中元素个数 5.栈的清空和原创 2017-12-01 15:30:17 · 586 阅读 · 0 评论 -
bitset
位集合容器(bitset),bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值只有0和1,因此很节省空间。位集是用来保存一组项或者条件的yes/no(1或者0)信息的一种简洁方法。bitset为我们简化了对于位集的处理。头文件为#include 1.创建bitset对象 创建对象是,必须要制定容器的大小。一经定义就不能在改变。下面个这个语句定义了birset对象b,他原创 2017-12-01 16:40:28 · 444 阅读 · 0 评论 -
accumulate(求和函数)
#include using namespace std; int main() { double a[4]={1.1111,1.1,1.1,1.1}; cout<<accumulate(a,a+4,0.0)<< endl; return 0; } #include using namespace std; int main() { vector v; for(int原创 2017-12-09 21:13:49 · 490 阅读 · 0 评论 -
list
list容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线性表。对于链表的迭代器只可以通过”++“或”--“的操作将迭代器移动到后继/前驱节点元素处。 而不能进行+n或-n的操作。 1.创建list对象 list l;//创建空链表 list l(10);//创建具有10个元素的空链表2.元素插入和遍历 插入有三种方式 ①采用push_back()方法往尾部插原创 2017-11-30 21:13:04 · 305 阅读 · 0 评论 -
set, multiset 和 unordered_set, unordered_multiset
集合(Set)是一种包含已排序对象的关联容器。 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,它不会插入相同键值的元素,而采取忽略处理。 平衡二叉树的检索使用中序遍历算法,检索效率高于vector、deque和list等容器。 对于set容器中的键值,不可直接去修改!应该先删除该键值,再插入新原创 2017-11-29 21:01:49 · 1981 阅读 · 0 评论