【问题标题】:4d mapping in C++ with tuple使用元组在 C++ 中进行 4d 映射
【发布时间】:2019-10-14 14:20:24
【问题描述】:

这有点类似于这个问题4d mapping in C++? 和我之前关于 C++ 地图的问题之一Use a map with the map name defined by a string C++

我有一个看起来像这样的代码(它不起作用并停在为地图提供输入的行):

#include <iostream>
#include <string>
#include <tuple>
#include <map>
#include <vector>

using namespace std;

int main()
{
    map<string, //Volkswagen (car brand)
        map<string, //series
            map<int, //in this example 1
                tuple<string, string>>>> mapMapMap;

    string myCarmapMapMap = "Volkswagen";
    int Number = 1;

    mapMapMap[myCarmapMapMap]["3 series"][Number] = {90, 20};,

    string Output;
    Output.assign(get<0>(mapMapMap[myCarmapMapMap].find("3 series")->second));
    cout << "\n" << "------------" << "\n" << Output << "\n"<< "------------" << "\n";
}

我想做的是为Volkswagen3 series1 分配两个值,然后可以这样调用它: Volkswagen -&gt; 3 series -&gt; 1 -&gt; &lt;0&gt; (value 1).

这是我收到的错误消息: |19|error: expected primary-expression before ',' token|

我也试过了:

mapMapMap.insert({myCarmapMapMap, "3 series", Number, {"90", "20"}});

但它也不起作用。如何将 4d 地图与元组结合起来?

【问题讨论】:

  • 您期望tuple&lt;string, string&gt;,但您尝试分配整数9020
  • 您收到的错误消息应该包含足够的信息来解决问题。
  • 没错,但把“”放在周围没有帮助。
  • 那么你需要告诉我们你所说的“它不起作用”是什么意思。你有构建错误吗?请将完整且完整的错误输出复制粘贴到问题中。并请刷新how to ask good questions,以及this question checklist
  • 谢谢,我更新了错误信息。

标签: c++ dictionary


【解决方案1】:

更改您的分配,使其实际上可以形成tuple&lt;string, string&gt;(注意右侧的引号):

mapMapMap[myCarmapMapMap]["3 series"][Number] = {"90", "20"};

Example

另外,删除行尾的,

您的查询可能可以通过再次包含Number 来修复,例如:

string output = get<0>(mapMapMap[myCarmapMapMap].find("3 series")->second[Number]);

【讨论】:

  • 这有帮助,但我仍然无法搜索我想要的内容。 |22|error: no matching function for call to 'get(std::map&lt;int, std::tuple&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;&amp;)'|
  • 是的,因为该查询为您提供 map&lt;int, tuple&lt;string, string&gt;&gt; 而不是 tuple&lt;string, string&gt;。这就是get 不起作用的原因。
  • 最后一步怎么写?请参阅上面的评论以了解我的尝试...
猜你喜欢
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 2020-06-13
  • 2017-04-26
  • 2015-01-15
相关资源
最近更新 更多