【问题标题】:How would I initialize an array of Maps in C++?如何在 C++ 中初始化 Maps 数组?
【发布时间】:2019-09-29 08:24:36
【问题描述】:

我正在尝试用 C++ 初始化一个 Maps 数组,但遇到了麻烦。

我希望数组的每个元素都包含一个整数(键)和字符串(值)对,所以我认为 Maps 数组是个好主意,但我无法弄清楚如何初始化。

map <int, string> * myArray; 

有效,但以下无效:

myArray = new map <int, string> [10];

我不知道为什么。

我无法找到这方面的参考资料,因为我热衷于在我的代码中使用数组,而不是 Vector,它的文档记录要好得多。非常感谢任何指导。

【问题讨论】:

  • std::map&lt;int,double&gt;* maps = new std::map&lt;int,double&gt;[10]; 应该编译。请发布您正在使用的确切代码及其给您的错误。 “不起作用”是没用的。
  • 如果你的数组中的每个元素都只是一个键值对,那么映射是从哪里来的呢?根据你的第二句话,你想要一个std::pair&lt;int, std::string&gt;[N]。此外,没有太多理由更喜欢数组而不是向量。你的是什么?
  • 你的代码编译了,你为什么说它没有编译?但是请注意,地图不仅仅是一对。你需要一个地图,一个地图数组还是一对数组?目标是什么(不谈解决方案)?
  • 我热衷于在我的代码中使用数组——无需使用哑数组或指针。 std::array&lt;std::map&lt;int, std::string&gt;, 10&gt; myArray;

标签: c++ arrays hashmap priority-queue abstract-data-type


【解决方案1】:

您发布的代码很好,应该可以编译。

map <int, string> * myArray = new map<int, string>[10];

此默认值在堆上构造 10 个映射,但您在问题中说您希望 ARRAY 的每个元素都保存一个键和一个值。请注意,地图不是数组,它们的实现和使用有很大的不同。

我认为您可能正在寻找的东西是

pair<int, string>* myArray = new pair<int, string>[10];
// or alternatively
vector<pair<int, string>> myArray(10);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2011-09-08
    • 2010-12-18
    • 2023-03-13
    • 2012-05-28
    • 2012-01-22
    • 2011-01-03
    相关资源
    最近更新 更多