如何将字符串插入数组并让它在2D数组之间选择一个随机数组?

时间:2017-07-07 14:19:52

标签: c++ arrays

我无法想到一个合适的问句,所以让我解释一下我在这里要做什么。

我正在运行一个项目,用户将在我的程序/临时内存中输入句子。然后它会扫描单词,然后它会将单词(可以是任何东西)传递给变量 - 让我们把它称为myWord。

同时,该单词将扫描我的数组(数据库)以查找其同义词。然后将从我的数组列表中随机选择该同义词,然后将其分配给myWord。 myWord将覆盖最初输入的句子并输出新句子。

最后,我如何编码使我的软件扫描包含同义词的句子(我不会将所有单词更改为其同义词,只是某些单词 - 可以自己编码)并选择其同义词(重写原始单词)阵列

非常感谢任何想法,算法,方法或库。 谢谢。

1 个答案:

答案 0 :(得分:1)

如果您使用的是c ++ 11,那么您可以使用的是所有同义词的无序字词映射:

#include <unordered_map>
#include <vector>

unordered_map<string, vector<string>> makeSynonyms() {
   unordered_map<string, vector<string>> synonyms;
   // load up your synonyms
   synomyms["happy"] = {"cheerful", "pleased", "delighted"};
   synomyms["cheerful"] = {"happy", "pleased", "delighted"};
   synonyms["pleased"] = {"happy", "cheerful", "delighted"};
   return synonyms;
}

现在要使用它,您可以从同义词映射中为输入中的每个单词选择一个随机同义词。

unordered_map<string, vector<string>> synonyms = makeSynonyms();
string myWord = "happy";
vector<string> wordSynonyms = synonyms[myWord]; // this gets a list of synonyms
// now you can get a random element from the list