STL总结(1)

来源:互联网 发布:sql必知必会 第4版 pdf 编辑:程序博客网 时间:2024/05/16 06:13
1.栈(Stack):
#include<stack>stack<int> stack1;     //在是默认以deque为容器的stack1.push(element);stack1.pop();    stack1.empty();    //是否为空stack1.size();     //元素个数stack1.top();    //判断是否为栈顶元素

2.队列(Queue)

 #include<queue><pre name="code" class="cpp hljs" style="border: 0px; margin-top: 0px; margin-bottom: 0px; padding: 0.5em; font-size: 14px; font-family: Menlo, Monaco, "Andale Mono", "lucida console", "Helvetica Neue", "Microsoft YaHei", "Courier New"; vertical-align: baseline; counter-reset: lines 0; overflow-x: auto; line-height: 28px; background: rgb(248, 248, 255);"><pre name="code" class="cpp">queue<int> queue1;queue1.push(element);    //加入队列顶部queue1.pop();    //弹出队列里第一个元素queue1.back();    //队列最后一个元素queue1.front();    //队列第一个元素queue1.size();    //队列元素个数queue1.empty();    //队列是否为空
3.<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; font-style: inherit; font-weight: inherit; line-height: 20.8px; color: rgb(51, 51, 51); background-color: transparent;">双端队列</span><p style="border: 0px; margin-top: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-size: 15px; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; line-height: 24px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 14px; font-family: "microsoft yahei"; vertical-align: baseline; line-height: 26px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; vertical-align: baseline; line-height: 20.8px; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; vertical-align: baseline; line-height: 20.8px; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: verdana, arial, helvetica, sans-serif; vertical-align: baseline; line-height: 19.5px; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">使用deque容器之前必须加上<deque>头文件:</span></span></span></span></span></p><p style="border: 0px; margin-top: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-size: 15px; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; line-height: 24px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 14px; font-family: "microsoft yahei"; vertical-align: baseline; line-height: 26px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; vertical-align: baseline; line-height: 20.8px; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; vertical-align: baseline; line-height: 20.8px; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: verdana, arial, helvetica, sans-serif; vertical-align: baseline; line-height: 19.5px; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">#include<deque>;</span><span style="border-style: initial; border-color: initial; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></span></span></span></span></p><p style="border: 0px; margin-top: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-size: 15px; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; line-height: 24px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 14px; font-family: "microsoft yahei"; vertical-align: baseline; line-height: 26px; background: transparent;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; vertical-align: baseline; line-height: 20.8px; background: transparent;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; vertical-align: baseline; line-height: 20.8px; background: transparent;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: verdana, arial, helvetica, sans-serif; vertical-align: baseline; line-height: 19.5px; background: transparent;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; vertical-align: baseline; background: transparent;"></span></span></span></span></span></span></p><p style="border: 0px; margin-top: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-size: 15px; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; line-height: 24px; color: rgb(85, 85, 85); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">4.set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便的。</p><h2 id="set" style="border: 0px; margin: 0px; padding: 0px; font-weight: normal; font-size: 1.8rem; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; color: rgb(85, 85, 85); line-height: 28px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">set</h2><p style="border: 0px; margin-top: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-size: 15px; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; line-height: 24px; color: rgb(85, 85, 85); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">set模版类的定义在头文件<<code style="border: 1px solid rgb(225, 225, 232); margin: 0px 5px; padding: 2px 4px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(50, 165, 231); white-space: nowrap; background: rgb(251, 251, 251);">set</code>>中。</p><p style="border: 0px; margin-top: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-size: 15px; font-family: "Segoe UI", "Microsoft YaHei", "WenQuanYi Micro Hei", Arial, Verdana, Tahoma, sans-serif; vertical-align: baseline; line-height: 24px; color: rgb(85, 85, 85); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">定义set对象的示例代码如下:</p><pre class="prettyprint hljs cpp" style="border: 0px; margin-top: 0px; margin-bottom: 0px; padding: 0.5em; font-size: 14px; font-family: Menlo, Monaco, "Andale Mono", "lucida console", "Helvetica Neue", "Microsoft YaHei", "Courier New"; vertical-align: baseline; counter-reset: lines 0; overflow-x: auto; line-height: 28px; background: rgb(248, 248, 255);"><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span class="hljs-built_in" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(0, 134, 179); background: transparent;"><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span class="hljs-built_in" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;">set</span></span></span><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><</span><span class="hljs-keyword" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(149, 65, 33); background: transparent;"><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span class="hljs-keyword" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;">int</span></span></span><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;">></span></span> s;<span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span class="hljs-built_in" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(0, 134, 179); background: transparent;"><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span class="hljs-built_in" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;">set</span></span></span><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><</span><span class="hljs-keyword" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(149, 65, 33); background: transparent;"><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;"><span class="hljs-keyword" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;">double</span></span></span><span class="hljs-stl_container" style="border: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; background: transparent;">></span></span> ss;

set的基本操作:

s.begin()       // 返回指向第一个元素的迭代器s.clear()       // 清除所有元素s.count()       // 返回某个值元素的个数s.empty()       // 如果集合为空,返回true(真)s.end()         // 返回指向最后一个元素之后的迭代器,不是最后一个元素s.equal_range() // 返回集合中与给定值相等的上下限的两个迭代器s.erase()       // 删除集合中的元素s.find()        // 返回一个指向被查找到元素的迭代器s.get_allocator()   // 返回集合的分配器s.insert()      // 在集合中插入元素s.lower_bound() // 返回指向大于(或等于)某值的第一个元素的迭代器s.key_comp()    // 返回一个用于元素间值比较的函数s.max_size()    // 返回集合能容纳的元素的最大限值s.rbegin()      // 返回指向集合中最后一个元素的反向迭代器s.rend()        // 返回指向集合中第一个元素的反向迭代器s.size()        // 集合中元素的数目s.swap()        // 交换两个集合变量s.upper_bound() // 返回大于某个值元素的迭代器s.value_comp()  // 返回一个用于比较元素间的值的函数

multiset

在<set>头文件中,还定义了另一个非常实用的模版类multiset(多重集合)。多重集合与集合的区别在于集合中不能存在相同元素,而多重集合中可以存在。

定义multiset对象的示例代码如下:

multiset<int> s;multiset<double> ss;

multiset和set的基本操作相似,需要注意的是,集合的count()能返回0(无)或者1(有),而多重集合是有多少个返回多少个。

eque<int> c 创建一个空的deque;

c.front()返回c容器的第一个元素

c.back()返回c容器的最后一个元素

c.size()返回c容器中实际拥有的元素个数 

c.push_back(num)在末尾位置插入元素

c.pop_back()删除末尾位置的元素

c.push_front(num)在开头位置插入元素

c.pop_front()删除开头位置的元素

另外常用的还有:

c.insert(pos,num)在pos位置插入元素num

c.erase(pos)删除pos位置的元素




0 0