<algorithm>
中有没有什么东西可以让你检查std::容器中是否包含了什么东西?或者,一种制作一个的方法,例如:
if(a.x == b.x && a.y == b.y)
return true;
return false;
既然std::map
使用了密钥,这只能通过它来完成吗?
谢谢
发布于 2010-08-10 23:57:10
检查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 */
}
发布于 2010-08-11 00:11:14
如果搜索某个元素很重要,我会推荐std::set
而不是std::vector
。使用以下命令:
std::find(vec.begin(), vec.end(), x)
的运行时间为O(n),但std::set
有自己的find()
成员(即.myset.find(x)
),其运行时间为O(log )时间-对于大量元素,效率要高得多
std::set
还保证所有添加的元素都是唯一的,这使您不必执行任何类似if not contained then push_back()...
的操作。
发布于 2010-08-10 23:56:06
请参阅问题:How to find an item in a std::vector?
如果默认的operator==()
不足以进行“深度”相等性测试,您还需要确保已经为对象实现了合适的a。
https://stackoverflow.com/questions/3450860
复制相似问题