【问题标题】:unordered_map max_sizeunordered_map max_size
【发布时间】:2012-03-01 08:18:00
【问题描述】:

我正在使用std::unordered_map 并试图获取内存消耗,因此我执行了以下操作:

#include <iostream>
#include <unordered_map>

using namespace std;

int main(){
    unordered_map<int, int> map;
    map[21] = 12;

    cout << map.size() << endl << map.max_size() << endl;

    return 0;
}

结果是:

1
1152921504606846975

第一个是正确的,第二个是什么鬼?!

【问题讨论】:

    标签: c++


    【解决方案1】:
    map.max_size() 
    

    由于系统或库实现限制,返回容器可以达到的最大潜在大小。


    map.size() 
    

    返回容器中元素的数量。

    【讨论】:

    • 哦,我明白了。所以这不是一些缓冲区大小吗?那么在这种情况下,内存消耗等于map.size() * 2 * sizeof(int) 还是有一些“隐藏”的内存使用?
    • @GradGuy:由于容器本身需要内存,可能会产生一些开销。看看here
    【解决方案2】:

    检查cppreference:link

    ma​​p::max_size

    返回最大尺寸

    返回地图容器对象的最大元素数 可以坚持。

    这是容器可以达到的最大潜在大小,因为 系统或库实现限制。

    【讨论】:

      【解决方案3】:

      max_size()

      返回地图容器对象可以容纳的最大元素数。

      【讨论】:

        【解决方案4】:

        这是容器可能容纳的最大元素数量的上限。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-18
          • 1970-01-01
          • 2011-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-29
          • 2021-11-16
          相关资源
          最近更新 更多