stl
君记否
么么哒^ ^
展开
-
【STL】各容器成员对比表
【STL】各容器成员对比表<br /> <br />Sequence containers<br />Associative containers<br /> <br />Headers<br /><vector><br /><deque><br /><list><br /><set><br /> <br /><bitset><br />Members<br />complex<br />vector<br />deque<br />list<br />set<br />multiset<br />map<转载 2010-12-08 09:23:00 · 512 阅读 · 0 评论 -
__rotate_cycle函数详解
<br />这里的rotate操作,也就是指循环移位。比如将串“ABCDEFG”以D为中心旋转,就相当将该串向左循环移位,直到第一个元素为D为止,最后得到新串“DEFGABC”。要想方便的完成rotate操作,一个常见的技巧是这样的:先将前半部分反转,再将后半部分反转,最后再将整个串反转即可(这里的前半部分与后半部分是以旋转中心来划分的)。还是以串“ABCDEFG”以D为中心旋转为例,以D为分割点,将先半部分与后半部分分别反转后,得“CBAGFED”,最后将整个串反转即得“DEFGABC”。这个转载 2010-11-21 17:23:00 · 2259 阅读 · 0 评论 -
set,map 容器特性小结
<br />1、set底层实现是红黑树,不能通过迭代器改变set元素,因为其是const类型。<br />2、关联式容器应使用其提供的find函数来搜寻元素,效率更高。<br />3、map,set不允许两个元素拥有相同的键值。<br />原创 2010-11-12 15:21:00 · 547 阅读 · 0 评论 -
trivial destructor and non-trivial destructor
trivial理解为无用的,无意义的; non-trivial自然就是有实际意义的<br /><br />如果一个class没有定义destructor,如果这个class中的一个数据成员拥有destructor,那么编译器会自动合成出这个class的destructor来.在这个class的合成的destructor里调用那个数据成员的destructor,这个合成的 class的destructor是有意义的,即是non-trivial的. <br /> 如果这个class没有上述的原创 2010-11-08 10:06:00 · 717 阅读 · 0 评论 -
STL 神奇的__type_traits (转
在STL中为了提供通用的操作而又不损失效率,我们用到了一种特殊的技巧,叫traits编程技巧。具体的来说,traits就是通过定义一些结构体或类,并利用模板类特化和偏特化的能力,给类型赋予一些特性,这些特性根据类型的不同而异。在程序设计中可以使用这些traits来判断一个类型的一些特性,引发C++的函数重载机制,实现同一种操作因类型不同而异的效果。traits的编程技巧极度弥补了C++语言的不足 。举例:现在定义一个__type_traits可以获得类型的如下属性:1. 是否存在no转载 2010-11-08 09:58:00 · 500 阅读 · 0 评论 -
C++ placement new 用法举例
<br />在处理内存分配的时候,C++程序员会用new操作符(operator new)来分配内存,并用delete操作符(operator delete)来释放内存。这是一个new操作符的例子。<br />class CTest<br />{<br /> /* 成员函数和成员数据 */<br />};<br /><br />// . . . 代码<br /><br />// 分配一个对象<br />CTest * pTest = new Test;<br />// 分配一个有转载 2010-11-05 11:35:00 · 496 阅读 · 0 评论 -
关于size_t, ptrdiff_t, size_type, difference_type
<br />size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_t<br />ptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以使负数,std::ptrdiff_t.<br />size_type是unsigned类型,表示容器中元素长度或者下标,vector<int>::size_type i = 0;<br />difference_type是signed类型,表示迭代器差距,vector<int>:: difference_转载 2010-11-05 09:33:00 · 1951 阅读 · 0 评论 -
stl transform algorithm example
template < class InputIterator, class OutputIterator, class UnaryOperator ><br /> OutputIterator transform ( InputIterator first1, InputIterator last1,<br /> OutputIterator result, UnaryOperator op );<br /><br />template转载 2010-11-04 19:37:00 · 799 阅读 · 0 评论 -
STL中map用法详解
<br />Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。<br />下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就转载 2010-10-31 16:57:00 · 372 阅读 · 0 评论 -
对stl的set中元素进行删除时需注意的地方
<br />http://www.cppblog.com/Herbert/archive/2009/01/08/70479.html<br />STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。<br /> 在使用 list、set 或 map遍历删除某些元素时可以这样使用:<br />正确使用方法1 std::转载 2010-10-20 14:28:00 · 10946 阅读 · 2 评论 -
STL vector 容器介绍 (转,讲得还是比较精辟的)
<br />介绍std::vector,并且讨论它在STL中的算法和条件函数remove_if()。<br /><br /><br />介绍<br />这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。<br /> <br />Vector总览<br />vector是C+转载 2010-12-08 10:59:00 · 514 阅读 · 0 评论 -
详细解说 STL 排序(Sort)
<br />作者Winter <br />出处:http://www.stlchina.org/twiki/bin/view.pl/Main/STLSortAlgorithms<br />0 前言: STL,为什么你必须掌握 <br />--------------------------------------------------------------------------------<br />对 于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都转载 2010-12-08 10:41:00 · 534 阅读 · 0 评论 -
stl 关于erase,remove,元素删除
<br />你要erase的元素很容易识别。它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素。要除去那些元素,你要做的所有事情就是用那两个迭代器调用erase的区间形式(参见条款5)。因为remove本身很方便地返回了区间新逻辑终点的迭代器,这个调用很直截了当:vector<int> v; // 正如从前<br />v.erase(remove(v.begin(), v.end(), 99), v.end()); // 真的删转载 2011-03-09 08:26:00 · 1160 阅读 · 0 评论