检查一个std :: vector是否包含某个对象?

可能重复:
如何在std :: vector中find一个项目?

<algorithm>有什么东西可以让你检查一个std ::容器是否包含某些东西? 或者,一个方法,例如:

 if(ax == bx && ay == by) return true; return false; 

这只能用std::map完成,因为它使用键?

谢谢

检查v包含元素x

 #include <algorithm> if(std::find(v.begin(), v.end(), x) != v.end()) { /* v contains x */ } else { /* v does not contain x */ } 

检查v包含元素(非空):

 if(!v.empty()){ /* v is non-empty */ } else { /* v is empty */ } 

如果search一个元素是重要的,我build议使用std::set而不是std::vector 。 使用这个:

std::find(vec.begin(), vec.end(), x)在O(n)时间运行,但std::set有它自己的find()成员(即myset.find(x) )运行在O(log n)时间 – 这对于大量元素来说效率更高

std::set也保证所有添加的元素都是唯一的,这样可以避免你不必做任何事情,比如if not contained then push_back()...

看问题: 如何在std :: vector中find一个项目?

你还需要确保你已经为你的对象实现了一个合适的operator==() ,如果缺省的operator==()不足以进行“深度”相等性testing的话。