我有一个字符串数组,里面填充了句子中的单词.
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;),但是每个键只允许一个值(我认为).
希望我解释得对.
std::multimap
该链接提供了一个很好的例子.引用如下:
int main() { multimapm; 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; }
如果您使用的是C ++,则只需创建一个类来表示您的键/值对:
Class foo { key : String values : list of values }
然后,创建一个将每个键映射到包含其值的对象的映射。
这是简单,可扩展的,并且可以用任何OO语言完成。
抱歉,我的C ++生锈,因此语法错误,但是基本思想很简单。