本文主要是介绍C++nbsp;STLnbsp;nbsp;速成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
STL 之模板
可以将两个函数合并
定义函数模板:
程序一
程序二
STL概述:
容器:可容纳各种数据类型的数据结构
vector list deque set map stack queue
共有的成员函数 empty( ) size( ) begin( ) end( )
rbegin( ) 最后一个元素的迭代器。
rend( ) 第一个元素前面的位置的迭代器
erase( ) clear( )
迭代器:可访问容器中的元素的特殊指针
算法:用来操作容器中元素的函数模板
函数对象:是一个类似函数的对象,可像函数一样调用
STL之vector
说明:实际上就是动态数组,但比数组灵活 ,能够自动增加以容纳新的元素。
初始化:vector v;
Vector v2(n,i);
方法:访问 cout<<v[i];
迭代器访问;
插入:Push_back () 在尾部插入元素;
Insert 在任意地方插入 insert(iterator it,T t); insert(v.begin+10,10);
删除: pop_back(); 删除最后一个元素
Erase()删除指定区域或位置的一段区间的元素
Clear ()删除所有元素
向量大小:size()
resize()
排序 sort(v.begin( ),v.end( ));
程序:
STL之List
说明:是一个双向链表 双向访问链表中的结点
创建: list table
List table(10)
List table (10,1);
插入:push_back( )
Push_front( )
Insert( iterator it,T t)
删除:remove (T elem) 去重 pop_front( ) pop_back( ) erase( iterator it) clear( )
遍历: for(it=talbe.begin();it!=table.end();it++) //前向遍历
For(it=table.rbegin();it!=table.rend();it++) //后向遍历
小心:table.end()里是不存元素的
排序: table.sort( )
剔除连续重复的元素: unique
重组链表:splice
链表的逆置:reverse( )
合并:table1.merge(table2);
查找:it=find(table.begin(),table.end(),100);
例题:约瑟夫环
STL之Set
1, 介绍:
主要特性就是存放不相同元素的容器
一般用于查找大数据中的某一元素,或者是插入不相同的元素
将插入数据生成一棵平衡二叉树(AVL)。
查找一般用 set 容器。(尤其是大数据)比向量vector 快的多
红黑树 查找高效,统计性能好于平衡二叉树。
STL set容器使用的是红黑树。
2, 使用:
申明:sets; set s
自定义自己的比较规则
set 对象名
3, 方法:
(1) Insert (): 将元素插入到集合中。
Pair insert(const value_type &x); 返回值为pair型<</font>迭代器位置,是否成功>
Pair:
pair a(10,’A’); //表示a中有两个类型值
(2) Erase(): 删除元素
(3) 遍历:for(it=s.begin( );it!=s.end( );it++)
(4) Find() :查找
(5) Swap 交换两个集合中的元素。
STL之map
1, 介绍:映造容器中节点元素由key(键,排序)和value构成。效率 0(nlogn)
2, 使用: map,char>m
m.clear() //清空容器
m.find(xx)!=m.end(); //查找
3, 方法:(1) insert:与数组辅助类似 m[10]=”a”; m[key]=”value”
Typedef pair mypair;
m.insert(mypair(1,’a’));
或者:m.insert(pair(1,’a’));
(2) clear() erase() 删除
例题:
题目描述
Julius Caesar 生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。
假 设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都 分别替换成字母F,V替换成A,W替换成B…),其他字符不 变,并且消息原文的所有字母都是大写的。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
输入
最多不超过100个数据集组成。每个数据集由3部分组成:
起始行:START
密码消息:由1到200个字符组成一行,表示Caesar发出的一条消息
结束行:END
在最后一个数据集之后,是另一行:ENDOFINPUT
输出
每个数据集对应一行,是Caesar 的原始消息。
STL之stack queue
略
不支持迭代器
STL之string
s + t 将串s和t连接成一个新串
s = t 用t更新s
s == t 判断s与t是否相等
s != t 判断s与t是否不等
s < t 判断s是否小于t(按字典顺序比较)
s <= t 判断s是否小于或等于t (按字典顺序比较)
s > t 判断s是否大于t (按字典顺序比较)
s >= t 判断s是否大于或等于t (按字典顺序比较)
s[i] 访问串中下标为i的字符
这篇关于C++nbsp;STLnbsp;nbsp;速成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!