c++ - 从 C++ 无序集中有效地提取元素
问题描述
在 C++ 中,假设您有一个无序的字符串集 ( https://en.cppreference.com/w/cpp/container/unordered_set ) - 有没有一种方法可以有效地从该集合中提取满足特定条件的所有字符串(例如 find集合中所有以字母“a”开头的字符串)使用的方法不是使用 for 循环遍历整个集合并检查每个字符串的第一个字符?
解决方案
对于任何标准,这是不可能的,请参阅此答案以获取更多详细信息。
根据您的其他需求,排序 std::vector
很可能是单独提取部分最有效的。使用算法,例如std::lower_bound
处理排序 std::vector
的. 最后,您的实际用例总体上决定了哪个容器最适合性能 - 尽管std::vector
考虑到性能接近于一刀切(这是因为连续存储的所有内部优化)。
话虽如此,通常建议使用似乎最适合手头问题的容器,并且仅在存在实际性能瓶颈时才进行巧妙的优化。
推荐阅读
- c# - 如何对绘制的图形进行操作
- ruby - 如何测试方法是否被调用
- html - 页脚外的文字
- android - 无法解析 ':app@debug/compileClasspath' 的依赖关系:无法解析 com.daimajia.slider:library:1.1.5
- python - 带有可选参数的适当方法签名
- vuejs2 - 在Vuejs中从json结果制作多维数组
- javascript - 在浏览器扩展中使用 libsodium.js
- elixir - 在开发中模拟 3rd 方库
- java - 如何优化以下程序?
- python - RuntimeError:当我加载 sklearn 模型时,字典在迭代期间更改了大小