STL set-九野
- 格式:doc
- 大小:110.00 KB
- 文档页数:31
tempSet.find() 是O(log n )//不是木有时间的- =Set容器里面删除一个给定的值A.erase(要删除的值)for(it=b.begin();it!=b.end();it++){if(find(a.begin(),a.end(),*it)!=a.end())a.erase(*it); //删除a中 *it 的函数但是删除以后这个指针就指向一个不知道什么的东西可以多加个变量来代替}这里的find 这几个参数是finf( 从a的头开始找,找到a的尾, 找里面有没有*it 的值) **** 这个第一第二个参数默认为头尾可以不写Set默认排序是小到大#include<set>using namespace std;===返回第一个元素的定位器(iterator)的地址。
#include<set>using namespace std;int main(){set <char> ctr ; //定义一个char 的set容器set <char>::iterator cp; //定义一个set 里的指针ctr.insert('a'); //插入元素ctr.insert('b');cp=ctr.begin(); //指向到ctr 的开始位置Ctr.clear(); //清空set 容器i = ctr.size () ; //返回容器的大小If(ctr.empty()) //空即是真//set 容器为空时cout<<"The container is empty"<<endl;int i;i=ctr.count('a'); //求出关键字为字符'a'的元素的个数Ctr.erase(cp); //删除ctr 的cp 位置的元素ctr.erase(*cp) ; //删除*cp 这个元素ctr.erase(first,last) //删除first到last 之间的数set <int>::reverse_iterator rcp; //定义一个指向最后元素的指针则rcp++ 就是往回走注意这两点这样可以反向使用set{cp = ctr. find('a') ; // 寻找与'a' 一样的元素一样就返回指向这个元素的地址,否则返回ctr.end();求出与给定的关键字相等的元素的定位器。
找到该元素时,返回一个指向关键字为_Key 的元素的定位器,否则返回一个指向set 容器的结束的定位器。
}set<char> ctr2; //比较2个容器是否一致{if(ctr1==ctr2)//当ctr1 与ctr2 相同时是为真cout<<"They are equal"<<endl;else //当ctr1 与ct2 不同时cout<<"They are not equal"<<endl;两个set 容器的大小比较是基于第一个不相同的元素的大小比较。
函数返回值:当_Left>=_Right 时,返回True,否则返回False。
}======================================================================※ 1 ※C++ 中的set 容器内容提要:在标准模板库(STL)中提供了很多的容器,它们是存储对象的对象。
本文主要介绍STL 中的关联容器——set 容器,内容包括set::begin、set::clear、set::count、set::empty、set::end 等26 种函数。
本容器是以模板的形式设计的,能应用于广泛的数据类型。
关键字:begin、clear、count 、empty、end、find、insert引言:set 是一个容器,它用于储存数据并且能从一个数据集合中取出数据。
它的每个元素的值必须惟一,而且系统会根据该值来自动将数据排序。
每个元素的值不能直接被改变。
正文:1 set 容器set 容器简介:set 是一个容器,它用于储存数据并且能从一个数据集合中取出数据。
它的每个元素的值必须惟一,而且系统会根据该值来自动将数据排序。
每个元素的值不能直接被改变。
需加载的头文件:#include<set>using namespace std;模板原型:template <class Key,class Compare=less<Key>,class Allocator=allocator<Key>>说明:表1 为set 的参数说明。
表1 set 的参数说明参数含义Key 存储在set 容器中的关键字的数据类型Compare 它能提供比较两个元素的函数来决定它们在set 容器中的相对位置。
它是可选的,它的默认值是less<key>allocator 它代表存储管理设备。
它是可选的,它的默认值为allocator<Key>set 容器有以下的特点:(1)它是一个相关联的容器,它的大小可以改变,它能根据关键字值来提高读取数据的能(2)它提供一个双向的定位器来读写取数据。
(3)它已经根据关键字和一个比较函数来排好序。
(4)它的每一个元素的关键字是惟一的,因此每一个值至多与一个元素对应。
(5)它是一个简单的容器,因为它的元素的值就是它的关键字。
(6)它是一个模板类,因为它提供一个一般且具有独立性的容器。
成员变量:set 的成员变量说明如表2 所示。
表2 set 的成员变量说明成员变量功能说明Allocator_type 对象分配器const_iterator 提供一个双向的定位器,它能读取set 中的一个常元※ 2 ※续表2成员变量功能说明const_pointer 它能提供到一个常元的指针const_reference 一个常元地址const_reverse_iterator 提供一个双向的定位器,使得能够在set 容器中读取任意一个常值元素difference_type 它提供set 容器中由定位器所指定的范围内的元素的个数Iterator 提供一个双向入口定位器,使得能够在set 中读取或者修改元素Key_compare 它是提供两个元素的关键字的次序关系的函数Key_type 它描述每一个元素的关键字Pointer 提供一个指向set 中的某元素的指针Reference 提供在set 容器中的一个常元的地址Reverse_iterator 在反向的set 容器中提供一个双向的入口定位器,使得能够读取或者修改元素Size_type set 容器中元素个数value_compare 指传供一个能比较两个元素相对次序的函数value_type 存储的数据类型下面介绍set 的成员函数。
1.1 set::begin功能:返回第一个元素的定位器(iterator)的地址。
语法:const_iterator begin() const;iterator begin();说明:当返回的第一个元素的地址值为一个常值定位器(_iterator),则set 不会被修改。
当返回的第一个元素的地址值为一个定位器(iterator),则set 可被修改。
函数返回值:返回一个指向第一个元素的双向定位器地址。
/***************************************************程序编号:1程序功能说明:用begin 来定位到ctr 的开始位置,并打印出该元素。
***************************************************/#include <set>#include <iostream>int main(){using namespace std;set <char> ctr;set <char>::iterator cp;ctr.insert('a');ctr.insert('b');cp=ctr.begin(); //定位到ctr 的开始位置cout<<"The first element is:"<<*cp<<endl;※ 3 ※//打印出第一个元素return 0;}运行结果:运行结果如图1 所示。
图1 程序运行结果1.2 set::clear功能:将一个set 容器的全部元素删除。
语法:void clear();说明:clear 会删除set 容器的全部元素。
函数返回值:无。
示例:/***************************************************程序编号:2程序功能说明:先创建一个set 容器,再用clear 函数清空,最后打印是否为空的信息。
***************************************************/#include <set>#include <iostream>int main(){using namespace std;set <char> ctr;ctr.insert('a');ctr.insert('b');ctr.insert('c');ctr.clear(); //清空set 容器if(ctr.empty())//set 容器为空时cout<<"The container is empty"<<endl;else //set 容器为非空时cout<<"The container is not empty"<<endl;return 0;}运行结果:※ 4 ※运行结果如图2 所示。
图2 程序运行结果1.3 set::count功能:返回对应某个关键字的元素的个数。
语法:size_type count(const Key& _Key)const;说明:_Key 是要进行匹配的关键字的值。
函数返回值:返回关键字为_Key 的元素的个数。
示例:/***************************************************程序编号:3程序功能说明:先创建一个set 容器,再用count 函数求出关键字为1 的元素的个数。