STL
文章平均质量分 75
工程师WWW
R
展开
-
STL容器和算法的函数表
该篇分为十一部分,分别是:vector类的主要成员、deque类的主要成员、list类的主要成员、 stack类的主要成员、queue类的主要成员、priority_queue类的组要成员、set类的主要成员、multiset类的主要成员、map类的主要成员、multimap类的主要成员、STL算法函数(一)vector类的主要成员vector是可变长的向量,比较灵活原创 2011-10-27 16:40:39 · 1835 阅读 · 0 评论 -
Using STL
这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。一,STL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort(原创 2012-08-27 22:42:24 · 1536 阅读 · 3 评论 -
妙用for_each算法函数
for_each函数原形templateclass _InIt, class _Fn1> inline _Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func) { // perform function for each element for (; _ChkFirst != _ChkLas原创 2013-03-29 00:25:07 · 1563 阅读 · 0 评论 -
STL容器typedef命名规范
STL广泛用于C++程序,其中容器提供各种可选数据结构,极大方便了功能实现。在使用容器时,最好不要直接用诸如vector m_vecB;的方式,而应该先typedef一种类型出来,(切忌过度typedef容器的iterator,增加阅读负担)具体原因可参见《Effective STL》第二条。建议typedef 命名后缀为,如XxxVec,XxxList,XxxMap等。切忌什么纯大写+下划线,看原创 2012-02-14 10:49:23 · 3519 阅读 · 1 评论 -
map和hash_map的区别
这里列几个常见问题,应该对你理解和使用hash_map比较有帮助。4.1 hash_map和map的区别在哪里?构造函数:hash_map需要hash函数、等于函数;map只需要比较函数(小于函数). 存储结构:hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其内存数据结构是不一样的。4.2 什么时候需要用hash_map,什么时候需要用map?原创 2012-02-26 20:42:29 · 2322 阅读 · 0 评论 -
Linux与Windows中map类erase方法的差异
1#includeiostream>2#includemap>3#includestring>45usingnamespacestd;67intmain(intargc,char*argv[])8{9mapstring,int>MyMap;1011MyMap["bujiwu"]=原创 2014-02-09 18:53:11 · 3222 阅读 · 0 评论 -
STL 中map 用法详解
一.Map 概述Map 是STL 的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map 中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map 内部数据的组织,map 内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在ma原创 2011-11-08 18:02:03 · 1708 阅读 · 0 评论 -
hash_map中string为key的解决方法
当hash_map中使用string为key时,需用户扩展命名空间,否则报错如下:/usr/lib/gcc/x86_64-redhat-linux/3.4.5/../../../../include/c++/3.4.5/ext/hashtable.h:518: error: no match for call to `(const __gnu_cxx::hash) (const std::原创 2016-05-19 16:47:40 · 3392 阅读 · 0 评论 -
std::find ,set.find, multiset.find, map.find和multimap.find算法总结
这几天对到底选用哪个容器,用哪种形式的find函数有一些迷惑的地方。工作之后,花些时间对这些常用的东西做一个总结,方便以后翻阅所用。1.通用std::find 函数例子1:// find example#include #include #include usingnamespacestd; intmain () { intmyints[] =原创 2012-02-24 14:46:07 · 3966 阅读 · 0 评论 -
hash_map详解
详细解说STL hash_map系列 来源于http://www.stlchina.org/ 0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,原创 2011-11-08 18:03:53 · 1325 阅读 · 0 评论 -
返回vector对象与引用的区别
struct tagItem{int a;int b;}//假如在A类中定义成员:vector m_vecItem;vector A::f(){return m_vecItem;//tagItem需要定义拷贝构造函数,否则m_vecItem即使在别处push_back了,每一个元素的a,b成员不会拷贝过去而保持初值(0之类的值)}vector& A::f(){retur原创 2011-11-29 21:20:19 · 7196 阅读 · 0 评论 -
list学习指南
什么是STL呢?STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。 STL的目的是标准化组件,这样就不用重新开发,可以使原创 2011-11-08 18:07:44 · 1220 阅读 · 0 评论 -
神秘的auto_ptr
作者:winterTTr(转载请注明) 资料来源:《STL标准库》为什么说它神秘呢,那好吧,我可以换一个更直白的词语,那就是“陷阱重重”。对于不了解auto_ptr的人来说,使用它就是一种灾难,而避免这种灾难,就必须揭开它神秘的面纱,了解其内部运作机制。为什么要出现auto_ptr view plaincopy to clipboardprint?voi原创 2011-11-08 18:10:52 · 1600 阅读 · 2 评论 -
函数对象/仿函数
提到C++ STL,首先被人想到的是它的三大组件:Containers, Iterators, Algorithms,即容器,迭代器和算法。容器为用户提供了常用的数据结构,算法大多是独立于容器的常用的基本算法,迭代器是由容器提供的一种接口,算法通过迭代器来操控容器。接下来要介绍的是另外的一种组件,函数对象(Function Object,JJHou译作Functor仿函数)。什么是函数原创 2011-11-08 18:13:17 · 1359 阅读 · 0 评论 -
STL常用技巧
1,删除一个元素比如:vector vecID; 中保存了m个ID,这时要删除第n个ID。遍历是一个方法;即vector::itertor it = vecID.begin(); 然后++it n次。更好的方法是:vector::itertor it = vecID.begin() + n; vector的迭代器直接支持这种偏移。然后用vecID.erase(it)原创 2011-11-08 18:15:13 · 1549 阅读 · 0 评论 -
map按值排序
在STL中,map是按键来排序的,但很多时候需要按值来排序。一种方法是将map转化为vector,然后排序。(#add 此法缺点为 map内容没变,而是整个的传给vector了,之后所要用的是vector.或许也不能说是缺点.) 另一个好的方案是 同时做一个反向的map,与之前的map,key value反过来存储.tool.h#ifndef TOOL_H#原创 2011-11-08 18:16:05 · 1461 阅读 · 0 评论 -
STL中常用的一些算法函数[持续更新]
1 merge 归并 将两个数组合并成一个(有序) merge(iarray1,iarray+len1,iarray2,iarray2+len2,result); 升序 merge(iarray1,iarray+len1,iarray2,iarray2+len2,result,greater()); 降序2 reverse 元素反向原创 2011-11-08 18:16:45 · 1284 阅读 · 0 评论 -
STL容器:删除元素,迭代器失效,选择时机
一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串非标准关联容器hash_set、hash_multiset、hash_map和hash_multimap。几种标准非STL容器,包括数组、bits原创 2011-12-26 16:03:33 · 2364 阅读 · 0 评论