赞
踩
有两种方式:
1.普通函数
2.仿函数
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include<algorithm> using namespace std; /*普通函数*/ void print01(int val) { cout << val << " "; } /*仿函数*/ class print02 { public: void operator()(int val) { cout << val << " "; } }; void test01() { vector<int>v; for (int i = 0; i < 5; i++) { v.push_back(i); } /*普通函数*/ for_each(v.begin(), v.end(), print01); cout << endl; /*仿函数*/ for_each(v.begin(), v.end(), print02()); cout << endl; return; } int main() { test01(); return 0; }
要注意:需要提前给目标容器开辟空间
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include<algorithm> using namespace std; class print { public: void operator()(int val) { cout << val << " "; } }; class Transform { public: int operator()(int val) { return val; } }; void test01() { vector<int>v; for (int i = 0; i < 5; i++) { v.push_back(i); } vector<int>vTarget; vTarget.resize(v.size());/*目标容器需要提前开辟空间*/ transform(v.begin(), v.end(), vTarget.begin(), Transform()); for_each(v.begin(), v.end(), print()); cout << endl; for_each(vTarget.begin(), vTarget.end(), print()); cout << endl; return; } int main() { test01(); return 0; }
要注意:bool operator==(const Person &p)
参数里要加const修饰
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; class Person { public: Person(string name, int age) { m_name = name; m_age = age; } bool operator==(const Person &p) { if (this->m_name == p.m_name && this->m_age == p.m_age) { return true; } else { return false; } } string m_name; int m_age; }; void test01() { vector<int>v; for (int i = 0; i < 5; i++) { v.push_back(i); } /*在v容器中查找5这个元素*/ vector<int>::iterator pos = find(v.begin(), v.end(), 4); if (pos == v.end()) { cout << "没找到该元素" << endl; } else { cout << "找到该元素,为:" << *pos << endl; } return; } void test02()/*测试自定义数据类型*/ { Person p1("刘备", 26); Person p2("曹操", 30); Person p3("赵云", 28); Person pp("赵云", 28); vector<Person>v; v.push_back(p1); v.push_back(p2); v.push_back(p3); vector<Person>::iterator pos = find(v.begin(), v.end(), pp); if (pos == v.end()) { cout << "没找到该元素" << endl; } else { cout << "找到该元素" << "名字: " << pos->m_name << " 年龄:" << pos->m_age << endl; } return; } int main() { test01(); cout << endl; test02(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。