![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
文章平均质量分 85
sicofield
这个作者很懒,什么都没留下…
展开
-
vector的clear操作的内部过程
最近在论坛看到一个提问帖子,问题是vector中存储了对象的指针,调用clear后这些指针如何删除?class Test{public: Test() {} ~Test() { cout << "Test des" << endl; }}; int main(){ vector vec; vec.push_back(new Test());原创 2013-04-07 21:05:33 · 11393 阅读 · 0 评论 -
vector的构造与内存管理
1.vector的数据结构template class vector {...protected: iterator start; //表示目前已使用空间的头 iterator finish; //表示目前已使用空间的尾iterator end_of_storage; //表示目前可用空间的尾(已原创 2013-04-07 21:09:58 · 4990 阅读 · 0 评论 -
仿函数
所有的仿函数定义在头文件中。1.定义及分析 仿函数就是一个定义了operator()的对象。class X {public://define "function call" operatorreturn-value operator() (arguments) const;...};//现在这个类对象就可以当做函数一样使用X fo;...fo(arg1,原创 2013-06-07 20:35:38 · 5032 阅读 · 1 评论 -
vector
1. 空间运用灵活性 vector与数组的唯一差别就在于空间运用的灵活性。vector的空间是可以动态增长的(但是不能减小)。需要空间运用的灵活性,vector就必须引入空间增长的机制,相应的也会有一些属性和接口。如下图:2. vector的操作:push_back, pop_back, resize, reserve,erase, clear, insert,sw原创 2013-08-09 16:08:21 · 2209 阅读 · 0 评论 -
list
1.list的数据结构 STL中的list不仅仅是一个双向链表,而且还是一个环状链表。所以它只需要一个指针就可以完整表现整个链表。 list中有一个属性node指针,刻意指向了尾端的一个空白节点,这样就符合STL前开后闭区间,并且以下几个函数就交容易实现。iterator begin(){return (link_type)((node*).next);}i原创 2013-08-09 16:20:35 · 894 阅读 · 0 评论 -
deque与容器适配器
1.deque概述 deque是双端队列,daque和vector的差异,一在于daque允许常数时间内对起头端进行元素的插入或移除操作,二在于deque没有所谓的容量(capacity)的概念。因为它是动态的以分段连续空间组合而成,随时增加一段新的空间并连接起来。 deque的内部结构很复杂,因此其迭代器结构也复杂。虽然其迭代器是Random Access Ite原创 2013-08-09 16:24:51 · 952 阅读 · 0 评论 -
排列组合
1.引言 pku的OJ平台1731题,就是求一个输入字符串的全排列。在STL中有两个和排列相关的算法,next_permutation和prev_permutation。2.next_permutation 这个算法的返回值为bool类型,如果能找到下一个排列的话就返回true,否则为false。有两个版本,第一个版本就是采用元素型别所提供的less-than操原创 2013-08-15 14:12:46 · 769 阅读 · 0 评论 -
erase和remove
1.引言 以下代码有什么问题,如何修改?#include#includeusing namespace std;void print(vector);//传引用不妥!!int main(){ vector array; array.push_back(1); array.push_back(6); array.push_back原创 2013-07-12 16:06:53 · 9313 阅读 · 4 评论 -
迭代器适配器
运用STL中的迭代器适配器,可以使得算法能够以逆向模式、安插模式进行工作,也可以和流搭配工作。1、 反向迭代器 将一个迭代器转换为反向迭代器的语法如:vector::reverse_iteratorrpos(pos);#include #include #include using namespace std;int main(){ vector coll;原创 2013-06-07 15:23:54 · 2506 阅读 · 0 评论