【问题标题】:How can I create a map with chars as key values and arrays of strings as mapped values - arrays must be of different length?如何使用字符作为键值和字符串数组作为映射值创建映射 - 数组必须具有不同的长度?
【发布时间】:2015-03-31 08:46:16
【问题描述】:

我不确定制作键值是 char 类型而映射值是字符串数组类型的映射所需的语法。数组需要有不同的长度。 比如:

map <char, string> backtranslate;
backtranslate['M'] = {"ATG"};
backtranslate['H'] = {"CAT", "CAC"}

请有人指定并解释正确的语法吗?

提前致谢!

【问题讨论】:

  • 您的意思可能类似于map &lt;char, vector&lt;string&gt;&gt; backtranslate;
  • 还有std::multimap
  • 那么,地图类型需要矢量,而不是数组?或者如果希望制作一个字符串“数组”,是否需要向量?
  • @izaak_pyzaak 您的示例代码显示,您想用char 映射string 值列表,通常用std::vector&lt;std::string&gt; 表示string 值列表。
  • @πάνταῥεῖ 太好了,再次感谢!

标签: c++ arrays dictionary


【解决方案1】:

你可以这样做:

map<char,vector<string>> backtranslate;
backtranslate['M'].push_back("ATG");
backtranslate['H'].push_back("CAT");
backtranslate['H'].push_back("CAC");

【讨论】:

  • 所以,您可以继续使用push_back 添加字符串元素,它们将被附加到映射到[''] 中选择的特定键的向量?
  • 非常感谢,我忘记了这个社区有多大帮助:)
  • @KarimBENHDECH:有一首歌叫“在你指责我之前,先看看你自己”。此代码在 C++ 中运行良好,这是问题被标记的语言。您的代码可能工作正常(我没有测试过),但它是用 Java 编写的,这使得您的答案与手头的问题无关!
  • 非常抱歉。我以为我在java部分:)
【解决方案2】:

在 Map 中,您可以将其作为 key 或 value,一切都扩展 Object。但是类型参数不能是原始类型,char 是原始类型。可以使用 String 类型代替 char。

地图以大写开头。

在Map中添加元素,存在put方法。

解决方案:

 Map<String, String[]> backtranslate = new HashMap<String, String[]>();
 backtranslate.put("M", new String[]{"ATG"});
 backtranslate.put("H", new String[]{"CAT", "CAC"});

或者(我更喜欢List,更容易操作):

Map<String, List<String>> backtranslate = new HashMap<String, List<String>>();
backtranslate.put("M", Arrays.asList("ATG"));
backtranslate.put("H", Arrays.asList("CAT", "CAC"));

【讨论】:

  • 这段代码看起来像 Java。问题标记为 C++。
  • 我在这里做错了吗?如,为什么将 java 作为解决方案提供?我是否因未正确标记 C++ 部分中的问题而引起混淆?
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多