Se proporcionan muchos algoritmos en el algoritmo, pero cuando hay funciones miembro de contenedor y funciones globales (algoritmos) al mismo tiempo, se da prioridad al uso de funciones miembro con el mismo nombre. Si no hay funciones miembro con el mismo nombre, se consideran estos algoritmos.
1.para_cada (transversal)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void myfunc(int c)
{
cout << c << endl;
}
class A
{
public:
void operator()(int c)
{
cout << c << endl;
}
};
int main()
{
vector<int> vec = { 5,4,3,1,2 };
//第一种调用方法,第三个参数传入一个函数
for_each(vec.begin(), vec.end(), myfunc);
//第二种调用方法,第三个参数传入一个仿函数
for_each(vec.begin(), vec.end(), A());
//第三种调用方法,第三个参数传入一个lambda表达式
for_each(vec.begin(), vec.end(), [](int c) { cout<<c<<endl; });
return 0;
}
Blog de referencia: función de imitación de C ++ Expresión lambda de C ++
2 encontrar
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int> vec = { 5,4,3,1,2 };
vector<int>::iterator finditer = find(vec.begin(), vec.end(), 400); //判断是否等于find的第二个参数,等于就没找到,不等于就找到了
if (finditer != vec.end())
{
cout << "找到了" << endl;
}
else
{
cout << "没找到" << endl;
}
return 0;
}
3 find_if
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int> vec = { 5,4,3,1,2 };
vector<int>::iterator finditer = find_if(vec.begin(), vec.end(), [](int c)
{
if (c < 3)
return true;
return false;
});
if (finditer != vec.end())
{
cout << "找到了:" <<*finditer<< endl;
}
else
{
cout << "没找到" << endl;
}
return 0;
}
4 clasificaciones (solo admite contenedores que contienen iteradores de acceso aleatorio, como vector)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool myfunc(int i, int j)
{
if (i < j)
return true;
return false;
}
int main()
{
vector<int> vec = { 5,4,3,1,2 };
sort(vec.begin(), vec.end(), myfunc);
for_each(vec.begin(), vec.end(), [](int c) {cout << c << endl; });
return 0;
}
5 Suplemento
Se proporcionan muchos algoritmos en el algoritmo, pero cuando hay funciones miembro de contenedor y funciones globales (algoritmos) al mismo tiempo, se da prioridad al uso de funciones miembro con el mismo nombre. Si no hay funciones miembro con el mismo nombre, se consideran estos algoritmos.