STL
GoRustNeverStop
这个作者很懒,什么都没留下…
展开
-
STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能转载 2016-01-03 23:22:51 · 402 阅读 · 0 评论 -
stl string常用函数
原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52f7string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c转载 2017-04-20 13:57:46 · 445 阅读 · 0 评论 -
c++ STL List查找遍历及各成员函数用法详细介绍
c++ STL List将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.c++ STL List就是一双向链表,可高效地进行插入删除元素。包括构造、方法等。 c++ STL List构造方法:list c0; //空链表list c1(3); //建一个含三个默认值是0的元素的链表list c2(5,转载 2017-02-14 09:39:29 · 3133 阅读 · 0 评论 -
Effective STL读书摘要(一)
一直在用STL,认为对STL也有一些理解,比如比较函数怎么写,什么情况下用什么容器效率高,但是当你读过Effective STL之后才知道这远远不够,之前的代码还有很多可以优化的空间,下面我会罗列一些映像比较深的点,比较偏向代码因为这样可以方便以后的调用。这里是到Item29,余下的留下次看。1) 检查容器是否为空if(c.empty()){} better than if(c转载 2016-12-14 15:50:44 · 423 阅读 · 0 评论 -
关于STL中map的erase迭代器是否失效的讨论
近来,在阅读一份开源代码的时候,看到了类似如下的代码:[cpp] view plain copytypedef std::mapint, std::string> id_names_t; id_names_t id_names; void EraseName(std::string name) { id_nam转载 2016-11-22 12:03:16 · 949 阅读 · 0 评论 -
map和vector的迭代器失效问题
当删除一个STL容器(比如map, vector)中的某个元素时, 会引起迭代器失效, 所以, 我们务必提高警惕。 题目: 删除map中value为5的倍数的元素。 该题看起来很自然很简单, 实则有迭代器失效的陷阱。如果对迭代器失效问题一无所知, 则很容易写出如下的错误代码: 1 #include 2 #include 3 using namespac转载 2016-11-22 12:01:39 · 726 阅读 · 0 评论 -
stl string 源代码分析
STL中string的源码解读 Ryan pengcutezero@163.comSunday, June 03, 2007 这是个人最近比较闲暇之余,对SGI STL中string分析,如果有任何理解错误,请和我联系,谢谢! 为什么要分析string呢?我们知道大多数的编译器实现的string都各不相同(即便是同一个编译厂商在不同的版本转载 2016-08-11 14:10:01 · 946 阅读 · 0 评论 -
STL面试题
1.说说std::vector的底层(存储)机制。 vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据。2.std::vector的自增长机制。转载 2016-08-01 22:23:13 · 6234 阅读 · 0 评论 -
C++STL常见面试题
1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等2.标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成转载 2016-08-01 21:07:32 · 21418 阅读 · 0 评论 -
深入剖析 linux GCC 4.4 的 STL string
深入剖析 linux GCC 4.4 的 STL stringPosted on 2012 年 11 月 26 日 by zieckey本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术。平台:x86_64-redhat-linuxgcc version 4.4.6 20110731 (Red转载 2016-08-04 19:11:40 · 1876 阅读 · 0 评论 -
C++之stl::string写时拷贝导致的问题
前几天在开发某些数据结构到文件的 Dump 和 Load 功能的时候, 遇到的一个 bug 。【问题复现】问题主要出在 Load 过程中,从文件读取数据的时候, 直接使用 fread 的去操作 string 的内部指针地址 (char*)s.c_str() 。 简化后的示例代码如下( testdata1 文件内容是12345):void Load(string& s, size转载 2016-08-04 19:10:14 · 2610 阅读 · 0 评论 -
stl string常用函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常st转载 2016-07-13 13:53:17 · 317 阅读 · 0 评论 -
C++中 vector、list、deque、set、map的底层实现
stl容器区别: vector list deque set map-底层实现stl容器区别: vector list deque set map (转)在STL中基本容器有: vector、list、deque、set、mapset 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问set:集合, 用来判断某一个元素是不是在一个组里面,使转载 2016-04-14 20:30:24 · 6749 阅读 · 0 评论 -
std::map::erase的用法及陷阱
方法一:std::map mapTest;bool TestVal(const std::string & val);......std::map::iterator it = mapTest.begin();while(it != mapTest.end()){ if(TestVal(it->second)) {转载 2016-04-14 20:24:27 · 2673 阅读 · 0 评论 -
list容器介绍
list容器介绍相对于vector容器的连续线性空间,list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间。常用函数(1) 构造函数list c:创建一个空的listlist c1(c2):复制另一个转载 2016-04-26 09:10:10 · 428 阅读 · 0 评论 -
STL的erase()陷阱-迭代器失效总结
阅读目录(Content)1.list,set,map容器1.1 正确写法11.2 正确写法21.3 错误写法11.4 错误写法21.5 分析2. vector,deque容器2.1 正确写法2.2 注意3.迭代器失效的情况3.1 vector3.2 deque3.3 list3.4 slist3.5 stack3.6 queue3.7 priority_q转载 2017-05-04 11:13:26 · 512 阅读 · 0 评论