检查字符串是否作为向量中的元素存在

use*_*189 11 c++ vector

检查字符串的stl向量是否包含特定字符串的最有效方法是什么?

Mar*_*k B 20

明显但可能太慢的解决方案是 std::find(vec.begin(), vec.end(), your_string);

如果您的载体没有太大变化,但排序第一,然后使用binary_search,lower_bound,upper_bound,或equal_range.如果您的矢量发生了很大变化,请考虑使用set/ multiset(或者如果需要map/ multimap).

根据您的需要,hash(unordered_set)也可能是合适的,但它与初始容器选择的区别在于正常的有序容器,而不是在C++ 0x之前提供(您可以轻松地从boost中获取).


qua*_*ana 8

使用std::find找到目标字符串.这是一个线性搜索,所以要小心搜索大型向量.

要确定向量是否包含目标,请使用:

bool isPresent = (std::find(vec.begin(), vec.end(), target) != vec.end());
Run Code Online (Sandbox Code Playgroud)