首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查std::vector是否包含某个对象?

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

Stack Overflow用户
提问于 2010-08-10 23:52:47
回答 3查看 557.3K关注 0票数 324

<algorithm>中有没有什么东西可以让你检查std::容器中是否包含了什么东西?或者,一种制作一个的方法,例如:

代码语言:javascript
运行
复制
if(a.x == b.x && a.y == b.y)
return true;

return false;

既然std::map使用了密钥,这只能通过它来完成吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-10 23:57:10

检查v是否包含元素x

代码语言:javascript
运行
复制
#include <algorithm>

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

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

代码语言:javascript
运行
复制
if(!v.empty()){
    /* v is non-empty */
} else {
    /* v is empty */
}
票数 622
EN

Stack Overflow用户

发布于 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()...的操作。

票数 125
EN

Stack Overflow用户

发布于 2010-08-10 23:56:06

请参阅问题:How to find an item in a std::vector?

如果默认的operator==()不足以进行“深度”相等性测试,您还需要确保已经为对象实现了合适的a。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3450860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档