我有一个unordered_set
在C++中,其中给定的桶号表示x,我必须打印HT[x]的给定桶中的所有元素,即我试图打印给定桶号x中的所有元素。 最后一个else块有它:
unordered_multiset<string>ht;
ll m;
cin>>m;
ht.reserve(m);
ll q;
cin>>q;
while (q--){
string cmd;
cin>>cmd;
if(cmd=="add"){
string s;
cin>>s;
if(ht.find(s)==ht.end()){
ht.insert(s);
}
}else if(cmd=="del"){
string s;
cin>>s;
if(ht.find(s)!=ht.end()){
auto it = ht.find(s);
ht.erase(it);
}
}else if(cmd=="find"){
string s;
cin>>s;
if(ht.find(s)!=ht.end()){
cout<<"yes"<<'\n';
}else{
cout<<"no"<<'\n';
}
}else{
ll x;
cin>>x;
auto it = ht.begin(x);
for(; it!=ht.end(x);it++){
cout<<*it<<' ';
}
cout<<'\n';
}
begin(
和end(
成员函数可用于迭代特定桶中的元素。 bucket_count()
成员函数返回存储桶的数量。 所以:
#include <unordered_set>
int main() {
std::unordered_set<int> foo;
for(size_t bno = 0; bno < foo.bucket_count(); ++bno) {
for(auto bit = foo.begin(bno), end = foo.end(bno); bit != end; ++bit) {
const auto& element = *bit;
// do stuff with element
}
}
}