C++ 查找vector容器中元素

C++ 查找vector容器中元素,第1张

C++ 查找vector容器中元素
#include
#include
#include
#include
#include

using namespace std;

void test01() {
	vector v1;
	for (int i = 1; i <= 10; ++i) {
		v1.push_back(i);
	}

	vector::iterator pos = find(v1.begin(), v1.end(), 5);
	if (pos != v1.end()) {
		cout << "find:" << *pos << endl;
	}
}

class person {
	friend void test02();
	friend class myCompare;
private:
	string name;
	int age;
public:
	person(string name, int age) :name(name), age(age) {}
	bool operator==(person p) {
		return this->name == p.name && this->age == p.age;
	}
};

class myCompare:public binary_function {
public:
	bool operator()(person p1, person p2)const {
		return p1.age > p2.age;
	}
};

void test02() {
	vector v2;
	person p1("Tom", 21);
	person p2("Andy", 23);
	person p3("Tim", 25);
	person p4("Jack", 28);
	person p5("Lucy", 22);
	person p6("David", 27);
	person p7("John", 20);
	v2.push_back(p1);
	v2.push_back(p2);
	v2.push_back(p3);
	v2.push_back(p4);
	v2.push_back(p5);
	v2.push_back(p6);
	v2.push_back(p7);
	
	vector::iterator pos = find(v2.begin(), v2.end(), p2);
	cout << pos->name << " " << pos->age << endl;

	pos = find_if(v2.begin(), v2.end(), bind2nd(myCompare(),p2));
	cout << pos->name << " " << pos->age << endl;
}

//adjacent_find算法 查找相邻重复元素
void test03() {
	vector v3;
	v3.push_back(3);
	v3.push_back(3);
	v3.push_back(46);
	v3.push_back(21);
	v3.push_back(27);
	v3.push_back(35);
	v3.push_back(46);
	v3.push_back(46);
	v3.push_back(3);

	vector::iterator res=adjacent_find(v3.begin(),v3.end());

	if (res != v3.end()) {
		cout << *res << endl;
	}
}

void test04() {
	vector v4;
	for (int i = 1; i <= 10; ++i) {
		v4.push_back(i);
	}

	//必须是有顺序的
	bool res = binary_search(v4.begin(), v4.end(), 2);
	cout << res << endl;
	if (res) {
		cout << "find !" << endl;
	}

}

class coutIf {
public:
	bool operator()(int val) const
	{
		return val > 5;
	}
};

void test05() {
	vector v5;
	for (int i = 1; i <= 10; ++i) {
		v5.push_back(i);
	}
	v5.push_back(6);
	v5.push_back(6);
	v5.push_back(6);
	v5.push_back(6);

	int res=count(v5.begin(), v5.end(), 6);
	cout << "6的个数为: " << res << endl;

	res = count_if(v5.begin(), v5.end(), coutIf());
	cout << "cout_if: " << res << endl;
}

int main() {
	test01();
	cout << "-----------------------" << endl;
	test02();
	cout << "-----------------------" << endl;
	test03();
	cout << "-----------------------" << endl;
	test04();
	cout << "-----------------------" << endl;
	test05();
	system("pause");
	return EXIT_SUCCESS;
}
find:5
-----------------------
Andy 23
Tim 25
-----------------------
3
-----------------------
1
find !
-----------------------
6的个数为: 5
cout_if: 9
请按任意键继续. . .

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存