#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/