首页 > 解决方案 > 从 C++ 无序集中有效地提取元素

问题描述

在 C++ 中,假设您有一个无序的字符串集 ( https://en.cppreference.com/w/cpp/container/unordered_set ) - 有没有一种方法可以有效地从该集合中提取满足特定条件的所有字符串(例如 find集合中所有以字母“a”开头的字符串)使用的方法不是使用 for 循环遍历整个集合并检查每个字符串的第一个字符?

标签: c++setunordered-set

解决方案


对于任何标准,这是不可能的,请参阅此答案以获取更多详细信息。

根据您的其他需求,排序 std::vector可能是单独提取部分最有效的。使用算法,例如std::lower_bound处理排序 std::vector的. 最后,您的实际用例总体上决定了哪个容器最适合性能 - 尽管std::vector考虑到性能接近于一刀切(这是因为连续存储的所有内部优化)。

话虽如此,通常建议使用似乎最适合手头问题的容器,并且仅在存在实际性能瓶颈时才进行巧妙的优化。


推荐阅读