
C++中vector使用find函数查找struct结构体内容
发布日期:2021-05-28 16:52:30
浏览次数:31
分类:精选文章
本文共 1312 字,大约阅读时间需要 4 分钟。
vector中使用find函数查找结构体内容
1. 基本类型的查找
在C++中,vector可以用find函数查找基本类型的元素。例如,标准的数值类型如int、string等,可以直接应用find函数。以下是一个简单示例:
#include#include using namespace std;int main() { vector arr; arr.push_back(1); arr.push_back(3); arr.push_back(7); arr.push_back(2); int x = 7; vector ::iterator it = find(arr.begin(), arr.end(), x); if (it != arr.end()) { cout << "Find!" << endl; } else { cout << "Not find!" << endl; }}
2. 复杂类型的查找(如结构体)
使用find函数直接查找结构体在vector中的元素会导致错误,原因在于find函数只能比较基于内建类型的元素。在这种情况下,我们需要手动重载非静态成员函数,或者使用更高级的方法如使用二进制搜索等。
下面是一个使用特定比较操作符实现结构体查找的示例:
#include#include using namespace std;struct edge_str { bool operator==(const edge_str& other) { return (this->posx == other.posx) && (this->posy == other.posy); } bool operator==(const int& pos) { return this->posx == pos; }};int main() { vector arr; edge_str x = {5, 7}; auto it = find(arr.begin(), arr.end(), x); if (it != arr.end()) { cout << "Find!" << endl; } else { cout << "Not find!" << endl; }}
在这一示例中,edge_str结构体定义了两个比较运算符:一个用于比较两个边的位置坐标,另一个用于比较位置坐标与整数值。这允许find函数理解如何比较边和整数,从而实现查找功能。
请注意,在结构体的比较中,需要注意定义全局operator==,或者在命名空间中声明。这确保find函数能够正确识别和使用自定义的比较逻辑。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月28日 14时57分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Error:scalac: bad option: '-make:transitive'
2019-03-14
微软xp壁纸rgb
2019-03-14
浏览器刷新页面
2019-03-14
代码错误信息,微信报错
2019-03-14
easyui日期处理(开始时间和结束时间)
2019-03-14
WPF画椭圆
2019-03-14
XMLHttpRequest对象的一个简单运用示例
2019-03-14
java文件上传
2019-03-14
DHCP跨网段分配IP地址
2019-03-14
10.多线程与并行
2019-03-14
Callable中call方法和Runnable中run方法的区别
2019-03-14
IDEA上移除项目(逻辑删除)
2019-03-14
Docker方式启动tomcat,访问首页出现404错误
2019-03-14
【蓝桥杯】 java 大学c组 省赛 1、隔行变色
2019-03-14
BIM轻量化——浏览器展示 | 利用unity
2019-03-14
超市账单管理系统
2019-03-14
Springboot实现热部署
2019-03-14
composer 介绍、安装及基本使用方法
2019-03-14
PHP 的 ::class 用法
2019-03-14