【问题标题】:What is the max input size of an index in a map?地图中索引的最大输入大小是多少?
【发布时间】:2026-01-13 15:55:02
【问题描述】:

我想将数字 108 作为索引存储在地图中。可能吗?如果是,我们可以在地图中使用的索引的最大值是多少?

【问题讨论】:

  • 你指的是std::map吗?
  • 地图不带索引,它们带键。
  • 地图键的最大值将是您用作键的数据类型的最大值。
  • std::uint64_t可以存储没问题。
  • 一般建议 - 如有疑问,请将您的号码转换为字符串。 :)

标签: c++ dictionary


【解决方案1】:

std::map 存储通过键而不是索引查找的条目。它不是一个数组。

您可以为键使用的最大值取决于您决定用于该键的任何数据类型。例如,108 很容易适合std::(u)int32_t(或更大)整数类型,其最大值为2147483647(有符号,231-1 )或4294967295(无符号,232-1)。您可以使用std::numeric_limits::max() 来确定任何数值类型的最大值。

std::map::max_size() 方法返回可以存储在映射中的最大条目数(即唯一键),无论它们的值如何。例如,如果您存储了键 0 和键 100000000 (108),则映射中将只有 2 个键,而不是 100000001 个键。

与索引数组不同,std::map 的键值仅与唯一性有关,与计数无关。

【讨论】:

  • 对不起,我输入了索引,我的意思是数字键(如 int long long)。非常感谢您的解释
【解决方案2】:

我会把它写成答案,因为注释没有很好的代码格式。

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
    map<string, string> my_map;
    int whatever_number = 100000000;

    string key = to_string(whatever_number);

    my_map[key] = "Hello World!\n";

    cout << my_map[key];
}

【讨论】:

  • 这并没有真正回答这个问题,因为他问的是使用“数字”,而不是字符串作为键。你的例子要好得多,只有一个 的映射并使用 whatever_numberdirectly 作为键。
最近更新 更多