【问题标题】:Is there a size() member function for std::pair?std::pair 是否有 size() 成员函数?
【发布时间】:2021-06-17 18:28:21
【问题描述】:

我正在关注一个哈希表实现教程并遇到了这个:

class HashTable {
private:
    static const int hashGroups = 10;
    std::list<std::pair<int,std::string>> table[hashGroups];

bool HashTable::isEmpty() const {
    int sum{};
    for(int i{}; i < hashGroups; i++) {
        sum += table[i].size();
    }
    
    if(!sum) {
        return true;
    }
    return false;
}

在isEmpty()成员函数中,为什么table[i].size()有效?在我的解释中,table 是一个对的列表,因此,table[i] 应该在索引 [i] 处返回一对。但是,std::pair 中没有成员函数 size()。

【问题讨论】:

  • 关注std::list&lt;std::pair&lt;int,std::string&gt;&gt; 很容易——对于学习这门语言的人来说,这是一个可怕的标点符号,但另一个你可能已经意识到你所做的事情是当你想到 table[i] 应该在 index [i] 返回一对” - 因为列表数据结构不能随机索引,标准库没有为 std::list 提供 operator[](size_t) 成员 - 这几乎是令人鼓舞的初学者编写非常低效的代码。检查这些东西的好地方是en.cppreference.com/w/cpp/container/list

标签: c++ hash std-pair


【解决方案1】:

tablestd::liststd::pair 的数组,所以table[i]std::list 并且它具有size() 函数。

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 2010-12-25
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2013-04-14
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多