0

从函数返回字符串时会有延迟吗?

背景信息:我做了一个简单的程序,输入字母并输出这些字母的任何字谜。它从包含数千个单词的非常大的文本文件中检查单词。它基本上将每个单词放入一个向量中并检查它是否是字母的变位词,如果是则将其打印出来。它通常在 1-15 秒内完成,我对此感到满意。

当我尝试将其转换为一个返回作为字谜的字符串的函数时,出现了问题。即使它仍然以相同的速度“cout”这个词,但在这之后大约需要 20 秒才能真正返回字符串和 cout。

为什么实际返回一个字符串比仅仅输出它需要更长的时间,我该如何解决它?

如有必要,我可以发布我的代码;

编辑:我将项目作为 zip 文件上传,因为它有 15 个文件。

http://www.mediafire.com/?c2gizpgcweg3iy4

为看到我的代码中的车祸而感到震惊。

4

1 回答 1

0

如果我要这样做,我想我会使用 anmultimap<string, string>或 a map<string, std::vector<string> >(两者大致相同)。

我将从阅读单词列表开始。当我阅读每个单词时,我会创建一个副本并对该副本中的字母进行排序。然后我将排序/原始对插入到 [multi]map 中,排序版本作为键。

当我需要查找单词的字谜时,我会对该单词进行排序,在地图中查找排序版本,并获取与该排序版本匹配的所有原始单词。在那之后,你几乎可以对他们做任何你想做的事情。

就大小和速度而言,我希望一个文件有 39 行,并且能够以每秒约 3000 个单词的速度读取输入并打印出匹配的字谜(如果您喜欢以不同的方式看待它大约每秒 15 KB 的输入)。当然,这个估计(?)是基于我 6 岁的机器。使用较新的计算机,您应该可以做得更好。

由于所有单词都是在输入期间加载的,因此如果您返回单词而不是将它们打印出来,我不希望这会减慢到任何可察觉的程度(事实上,如果您不打印出来,我希望它会有所加快结果)。

于 2012-12-18T06:12:52.393 回答