C++_hash_set
SGI STL是最健壮的STL实现之一,增加了很多扩充的容器,包括hash_set、hash_map、slist(单链表)、rope(它是一个string的变种,对非常大型的字符串、字符串的快速连接和取字串等操作进行了优化)。一、构造函数 默认构造函数、部分后全部复制另外一个hash_sethash_set > > hs1;hs1.insert(10);h
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)