当前位置:  开发笔记 > 编程语言 > 正文

我需要一个具有多个值的键.你会推荐什么样的数据结构?

如何解决《我需要一个具有多个值的键.你会推荐什么样的数据结构?》经验,为你挑选了2个好方法。

我有一个字符串数组,里面填充了句子中的单词.

words[0] = "the"
words[1] = "dog"
words[2] = "jumped"
words[3] = "over"
words[4] = "the"
words[5] = "wall."
words[6] = "the"
words[7] = "cat"
words[8] = "fell"
words[9] = "off"
words[10] = "the"
words[10] = "house."

等(愚蠢的例子,但它适用于此)

每个单词都是一个键,它的后续单词就是它的值.所以"over"=>"the".某些键可以有多个值.例如,"the"=>"dog"|| "墙"|| "猫"|| "屋".该值是从该密钥的值中随机选择的.

当程序运行时,它会随机选择一个单词并生成一个句子.所以它可能是这样的:"猫掉了狗".

我尝试实现一个map(map myMap;),但是每个键只允许一个值(我认为).

希望我解释得对.



1> dirkgently..:

std::multimap

该链接提供了一个很好的例子.引用如下:

 int main()
{
  multimap m;

  m.insert(pair("a", 1));
  m.insert(pair("c", 2));
  m.insert(pair("b", 3));
  m.insert(pair("b", 4));
  m.insert(pair("a", 5));
  m.insert(pair("b", 6));

  cout << "Number of elements with key a: " << m.count("a") << endl;
  cout << "Number of elements with key b: " << m.count("b") << endl;
  cout << "Number of elements with key c: " << m.count("c") << endl;

  cout << "Elements in m: " << endl;
  for (multimap::iterator it = m.begin();
       it != m.end();
       ++it)
   cout << "  [" << (*it).first << ", " << (*it).second << "]" << endl;
}



2> Larry Watana..:

如果您使用的是C ++,则只需创建一个类来表示您的键/值对:

Class foo {
    key : String
    values : list of values
}

然后,创建一个将每个键映射到包含其值的对象的映射。

这是简单,可扩展的,并且可以用任何OO语言完成。

抱歉,我的C ++生锈,因此语法错误,但是基本思想很简单。

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有