#include <iostream>
#include<algorithm>
#include<iterator>
#include<vector>
using namespace std;
class yang
{
public:
yang(int _age):age(_age){}
bool operator==(const yang&n)
{
return age == n.age;
}
int age;
};
class sen
{
public:
sen(int age):_age(age){}
//函數操作符
bool operator()(const yang& s)
{
return _age == s.age;
}
int _age;
};
int main()
{
{
std::vector<int>name{1,2,3,4,5,6,7};
auto itera = std::find(name.begin(),name.end(),3);
if(itera != name.end())
{
std::cout<<"finbd it :"<<std::distance(name.begin(),itera)<<std::endl;
}
// 如果是自己定義的對象時,要寫操作符重載
std::vector<yang> name1;
name1.emplace_back(12);
name1.emplace_back(14);
auto itera1= std::find(name1.begin(),name1.end(),14);
if(itera1 != name1.end())
{
std::cout<<"finbd it :"<<std::distance(name1.begin(),itera1)<<std::endl;
}
// find_if 第三個參數是函數對象。
// 這塊 你可以使用 操作符函數, lambda , 以及使用 function 與 bind的函數都可以
itera1= std::find_if(name1.begin(),name1.end(),sen(14));
if(itera1 != name1.end())
{
std::cout<<"finbd it :"<<std::distance(name1.begin(),itera1)<<std::endl;
}
int num =14;
itera1= std::find_if(name1.begin(),name1.end(),[=](yang s){ return s.age == num;});
if(itera1 != name1.end())
{
std::cout<<"finbd it :"<<std::distance(name1.begin(),itera1)<<std::endl;
}
}
{
std::vector<yang> name;
name.emplace_back(12);
name.emplace_back(13);
name.emplace_back(14);
name.emplace_back(15);
name.emplace_back(11);
name.emplace_back(12);
name.emplace_back(13);
std::vector<yang> name1;
name1.emplace_back(12);
name1.emplace_back(13);
auto itera = std::find_end(name.begin(),name.end(),name1.begin(),name1.end());
if(itera != name.end())
{
std::cout<<"found it :"<<std::distance(name.begin(),itera) <<std::endl;
}
itera = std::find_first_of(name.begin(),name.end(),name1.begin(),name1.end());
if(itera != name.end())
{
std::cout<<"found it :"<<std::distance(name.begin(),itera) <<std::endl;
}
}
{
//簡單解釋 操作符重載
sen s(10); // 調用構造函數
s(111); // 調用 operator()(yang &s)
sen(19)(10); // 這個和上面 兩條語句等價 , sen(19) 生成臨時對象 然後調用 operator()(yang &s)
}
return 0;
}
c++ find的簡單使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.