C++_hash_set

来源:互联网 发布:深圳网站建设独占网络 编辑:程序博客网 时间:2024/06/03 20:11

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 0