C++_hash_set

SGI STL是最健壮的STL实现之一,增加了很多扩充的容器,包括hash_set、hash_map、slist(单链表)、rope(它是一个string的变种,对非常大型的字符串、字符串的快速连接和取

字串等操作进行了优化)。

一、构造函数
      默认构造函数、部分后全部复制另外一个hash_set
hash_set<int, hash_compare<int, greater<int> > > hs1;
hs1.insert(10);
hs1.insert(20)
hs1.insert(30);
hs1.insert(40);

hash_set<int, hash_compare<int, less<int> > > hs0(hs1);

hash_set<int>::iterator bIter, eIter;
bIter = hs1.begin();
eIter = hs1.end();
bIter++;
eIter--;

hash_set<int> hs2(bIter, eIter);

二、提供与set一样的操作,但性能上优越些
      正向迭代
for(hash_set<int>::iterator ite = hs1.begin(); ite != hs1.end(); ite++)
   cout<<*ite<<endl;
     反向迭代
for(hash_set<int>::iterator ite = hs1.rbegin(); ite != hs1.rend(); ite++)
   cout<<*ite<<endl;
     hash_set的大小:size()成员函数;
     重新置hash_set为空:clear()成员函数;
     统计hash_set中某个元素的个数:count( element );要么是1(即出现了该元素),要么是0(即没出现这样的元素)
    
     交换两个hash_set之间的元素:swap(有两种版本:一种是hash_set自身的成员函数;一种是<algrithm>中方法)
hash_set<int> hs1, hs2, hs3;
hs1.insert(10);
hs1.insert(20);
hs1.insert(30);

hs2.insert(100);
hs2.insert(200);

hs3.insert(3000);

hs1.swap(hs2); //此时,hs1中的元素就是100,200

swap(hs1, hs3); //此时,hs1中的元素就是3000

    查找某个元素:find()成员函数;
    判断是否为空:empty()成员函数;

    查找指定元素的键值:hash_delegate();
hash_set<wchar_t> Myhash_set;
Myhash_set::hasher^ myhash = Myhash_set.hash_delegate(); 
cout<<"hash(L'a') = "<<myhash(L'a')<<endl;
cout<<"hash(L'b') = "<<myhash(L'b')<<endl;

   还有成员函数lower_bound()、upper_bound()和equal_range(),以及操作运算符operatorXx 等。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值