提问者:小点点

如何在C++unordered_set中打印给定桶号的所有元素? [已关闭]


我有一个unordered_set; HT在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';
    }

共1个答案

匿名用户

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
        }
    }
}

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++unordered_set|中|打印|给定|桶|号|元素|关闭)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?