原地转:
http://www.cplusplus.com/reference/algorithm/find_if/
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using
namespace
std;
typedef
struct
{
string str1;
string str2;
string str3;
}TASK_INFO_STRU;
bool
findx(TASK_INFO_STRU &task)
{
return
task.str2 ==
"task_two"
;
}
int
main()
{
vector<TASK_INFO_STRU> task_vector;
vector<TASK_INFO_STRU>::iterator iter;
TASK_INFO_STRU task;
task.str1 =
"1"
;
task.str2 =
"task_one"
;
task.str3 =
"fine"
;
task_vector.push_back(task);
task.str1 =
"2"
;
task.str2 =
"task_two"
;
task.str3 =
"fine"
;
task_vector.push_back(task);
iter = find_if(task_vector.begin(), task_vector.end(), findx);
if
(iter != task_vector.end())
{
cout << iter->str2 << endl;
task_vector.erase(iter);
}
iter = find_if(task_vector.begin(), task_vector.end(), findx);
if
(iter != task_vector.end())
{
cout << iter->str2 << endl;
}
return
0;
}
#include <iostream>
// std::cout
#include <algorithm> // std::find
#include <vector> // std::vector
bool
IsOdd (
int
i) {
return
((i%2)==1);
}
int
main()
{
int
p[] = {0, 1, 2, 3, 4, 5};
std::vector<
int
> myvector( p, p + 6 );
std::vector<
int
>::iterator it;
/** @brief find() example */
// iterator to vector element:
it = find( myvector.begin(), myvector.end(), 3 );
if
( it != myvector.end() )
// finded
{
std::cout <<
"The element 3 is found."
<<
'\n'
;
// now *it is 3. it is a iterator to int.
++it;
std::cout <<
"The element following 3 is "
<< *it <<
'\n'
;
}
/** @brief find_if() example */
// iterator to vector element matching some condition.
it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
if
( it != myvector.end() )
// finded
{
std::cout <<
"The first odd value is "
<< *it <<
'\n'
;
}
return
0;
}
find(first, last, val) 查找值为val的元素,返回迭代器
http:
//www.cplusplus.com/reference/algorithm/find/
find_if(first,last, pred) 查找符合某个条件的元素,返回迭代器
http:
//www.cplusplus.com/reference/algorithm/find_if/