C++中vector使用find函数查找struct结构体内容

vector使用find函数查找struct结构体内容

1.基本类型的查找

在一般情况下,vector在基本类型场景下可以直接find函数,如下:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
	vector <int> arr;
	arr.push_back(1);
	arr.push_back(3);
	arr.push_back(7);
	arr.push_back(2);
	//查找
	vector <int>::iterator it;
	int x = 7;
	it = find(arr.begin(), arr.end(), x);
	if( it != arr.end() )
	{
		cout << "Find!" << endl;
	}
	else
		cout << "Not find!" << endl;
}

2.复杂类型的查找

复杂类型的查找不能直接使用find函数,否则会报错。需要手写==重载函数。
例如结构体的查找,代码如下:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct edge_str{
    int posx,posy;
    //查找结构体e是否存在
    bool operator == (const edge_str &e){
        return (this->posx == e.posx) && (this->posy == e.posy);
    }
    //查找数值pos是否与posx相等
    bool operator == (const int &pos){
        return (this->posx == pos);
    }
};

int main(){
	vector <edge_str> arr;
	//1.查找结构体x是否存在与arr中
	vector <edge_str>::iterator it;
	edge_str x;
	x.posx=5;
	x.posy=7;
	it = find(arr.begin(), arr.end(), x);
	if( it != arr.end() )
	{
		cout << "Find!" << endl;
	}
	else
		cout << "Not find!" << endl;
		
	//2 .查找数值pos是否存在与arr的posx中
	vector <edge_str>::iterator it2;
	int pos=7;
	it2 = find(arr.begin(), arr.end(), pos);
	if( it2 != arr.end() )
	{
		cout << "Find!" << endl;
	}
	else
		cout << "Not find!" << endl;
}
  • 30
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用和提到,vector本身是没有find函数的,它是依靠algorithm库的find函数来实现查找功能。使用find函数需要包含algorithm头文件,然后通过vector的begin()和end()方法来指定查找范围。如果find函数返回的迭代器指向了end(),表示在指定范围内没有找到目标元素;如果返回的迭代器指向了其他位置,表示找到了目标元素的位置。的代码示例展示了如何使用find函数进行查找。首先定义一个vector,并向其添加元素。然后使用find函数查找特定元素的位置,并将返回的迭代器与end()进行比较,以确定是否找到目标元素。如果迭代器等于end(),表示没有找到;如果不等于end(),表示找到了目标元素。根据结果可以输出相应的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [(c++)vector——find方法的使用](https://blog.csdn.net/LosGod/article/details/121181649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C++vector使用find函数查找struct结构体内容](https://blog.csdn.net/qq_34039018/article/details/100077763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vector的find用法](https://blog.csdn.net/wcxyky/article/details/88543873)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值