stl-set

stl-set
set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。
1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素
2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数
3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)
set模板原型://Key为元素(键值)类型
template <class Key, class Compare=less<Key>, class Alloc=STL_DEFAULT_ALLOCATOR(Key) >
从原型可以看出,可以看出比较函数对象及内存分配器采用的是默认参数,因此如果未指定,它们将采用系统默认方式,
另外,利用原型,可以有效地辅助分析创建对象的几种方式

set的使用。
//set's using
#include 
   
   
    
    
#include 
    
    
     
     
using namespace std;

set
     
     
      
       m_set;
set
      
      
       
       ::iterator it;
int main( )
{
	for(int i=9;i>=0;i--)
    	m_set.insert(i);//insert
    cout<
       
       
      
      
     
     
    
    
   
   

set ,重载自定义结构体的 ‘()’运算符

//set ,重载自定义结构体的 ‘()’运算符 
#include 
    
    
     
     
#include 
     
     
      
      
using namespace std;
struct m_struct{
	    int a,b;
};
struct myless {
	bool operator ()(const m_struct &A,const m_struct &B)const{
		if(A.a
      
      
       
        m_set;
set
       
       
        
        ::iterator it;
m_struct x,y;

int main( )
{
	    x.a=3;y.a=2;
    	m_set.insert(x);//insert
    	m_set.insert(y);
 
    for(it=m_set.begin();it!=m_set.end();it++)
    cout<<(*it).a;//23
    
	return 0;
}

       
       
      
      
     
     
    
    
重载‘<’运算符
//set ,重载结构体的‘<’运算符 
#include 
    
    
     
     
#include 
     
     
      
      
using namespace std;
struct m_struct{
	    int a,b;
	
	bool operator < (const m_struct &A)const{
		if(a
      
      
       
        m_set;
set
       
       
        
        ::iterator it;
m_struct x,y;

int main( )
{
	x.a=3;
    y.a=2;
    m_set.insert(x);//insert
    m_set.insert(y);

 
    for(it=m_set.begin();it!=m_set.end();it++)
    cout<<(*it).a;//输出按m_struct类型的升序,若不重载
        
        <运算符,无法通过编译 return 0; } < code>
       
       
      
      
     
     
    
    
部分函数
#include 
      
      
       
       

//构造函数
set(const set&);

//增加函数
iterator insert(iterator it,const T& x);//在it所指位置前插入 

//删除函数
iterator erase(iterator it);
size_type erase(const Key& key);
void clear();

//遍历函数
iterator begin();
iterator end();

//判断函数
bool empty()const();

//大小函数
int size()const;

//查找函数
const_iterator find(const Key& key)const;//若找不到返回 set_ob.end() 

      
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值