STL之set的使用汇总

STL之set的使用汇总
set是STL中一种标准关联容器(vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差 (set_difference) ...

string 函数列表

string 函数列表
函数名 描述 begin 得到指向字符串开头的Iterator end 得到指向字符串结尾的Iterator rbegin 得到指向反向字符串开头的Iterator rend 得到指向反向字符串结尾的Iterator size 得到字符串的大小 length 和size函数功能相同 max_size 字符串可能的最大大小 capacity 在不重新分配内存的情况下,字符串可能的大小 empty 判断是否为空 operator[] 取第几个元素,相当于数组 c_str 取...

map中怎样使用自定义的类

map中怎样使用自定义的类
文章来源:STL入门教程.chm [cpp] //程序:映射自定义的类 //目的:说明在map中怎样使用自定义的类 #include <string> #include <iostream> #include <vector> #include <map> using namespace std; class CStudent { public: int nStudentID; int nAge; public: CStudent(){} //缺省构造函数 CStudent(int nSID,int nA) //普通构造函数 { nStudentID=nSID; nAge=nA; } CStudent(con...

STL之vector的使用四(vector的查找、空、及其它技巧)

STL之vector的使用四(vector的查找、空、及其它技巧)
判断vector是否为空 在判断容器是否为空的时候,使用empty()来代替size()是否为了0的检查方式,因为empty更加高效时间复杂度是常数时间的,size()时间复杂度不是常数时间的。 原则:使用empty判断标准容器是否为空 vector中的查找 原则:尽量使用标准容器自带的算法代替公共算法。 但是vector中并没有多少自己的算法,倒是list中有remove ,remove_if,sort,reverse等算法。 find find_if 使用交换技巧来修正...

STL之vector的使用三(vector的删除)

STL之vector的使用三(vector的删除)
删除指定元素 [cpp] vector<double> v1; //….初始化代码 vector<double>:: iterator i = find( v1.begin(),v1.end(), 3.0 ); if( i != v1.end() ) { v1.erase(i); } [/cpp] 这样就真的删除了么指定的元素了么?没有。其实只是内部的元素作了移动,vector的删除的时间复杂度是很高的。所以选择容器的时候,如果需要频繁在中间插入和删除元素,那选择vector就会影响效率了。 注意:插入或者删除...

STL之vector的使用二(vector的遍历)

STL之vector的使用二(vector的遍历)
遍历vector 例如有vector<int> v1; void print( int i) { cout << i << endl; } 方式一: for( int i=0; i < v1.size(); i++ ) { print(v1[i]); }   这种方式是我们最熟悉的,但是不够好,写起来不够简洁。而且对于没有随机迭代器的其他容器来说,这样做是办不到的。 方式二: typedef vector<int>:: iterator VIntIterator; VIntIterator end = v1.end(); for(...

STL之vector的使用一(初始化vector)

STL之vector的使用一(初始化vector)
简介:vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vector是STL推荐使用的默认容器,除非你知道你有特殊需要,使用vector不能满足你的需求,例如需要容器在head和tail高效的插入和删除,或者在任何位置高效的删除和插入操作,那么你可能使用deque或者list更加合适。 vector是连续内存容器,...

STL中栈的使用

STL中栈的使用
基本操作: push(x) 将x加入栈中,即入栈操作 pop() 出栈操作(删除栈顶),只是出栈,没有返回值 top() 返回第一个元素(栈顶元素) size() 返回栈中的元素个数 empty() 当栈为空时,返回 true 使用方法: 和队列差不多,其中头文件为: #include <stack> 定义方法为: stack<int>s1;//入栈元素为 int 型 stack<string>s2;// 入队元素为string型 stack<node>s3;//入队元素为自定义型...

STL中队列的使用

STL中队列的使用
基本操作: push(x) 将x压入队列的末端 pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值 front() 返回第一个元素(队顶元素) back() 返回最后被压入的元素(队尾元素) empty() 当队列为空时,返回true size() 返回队列的长度 使用方法: 头文件: #include <queue> 声明方法: 1、普通声明 queue<int>q; 2、结构体 [cpp]struct node { int x, y; }; queue<node>q;[/cpp]

STL中优先队列的使用

STL中优先队列的使用
队列的特点是先进先出。通常都把队列比喻成排队买东西,大家都很守秩序,先排队的人就先买东西。但是优先队列有所不同,它不遵循先进先出的规则,而是根据队列中元素的优先权,优先权最大的先被取出。通常把优先队列比喻成现实生活中的打印。一个打印店里有很多打印机,每台机器的性能不一样,有的打印机打印很快,有的打印机打印速度很慢。当这些打印机陆陆续续打印完自己的任务时进入排队等候状态。如果...
Copyright © C/C++程序员之家 保留所有权利.   Theme  Ality 浙ICP备15011757号-3

用户登录