我有一个字符串 vector ,必须检查 vector 中的每个元素是否存在于给定的 5000 个单词列表中。 除了两个嵌套循环的普通方法外,在 C++ 中还有更快的方法吗?
最佳答案
您应该将字符串列表放入 std::set 中.它是一种为搜索而优化的数据结构。查找给定元素是否在集合中是一项比迭代所有条目快得多的操作。
如果您已经在使用 C++11,您还可以使用 std::unordered_set这对于查找来说甚至更快,因为它是作为哈希表实现的。
这是否适用于学校/大学:准备好解释这些数据结构如何变得更快。当你的老师要求你解释你为什么使用它们时,“互联网上的一些人告诉我”不太可能在课本上为你赢得贴纸。
关于c++ - 快速字符串搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716915/