C++ set容器排序

#include 
#include 
#include 

class Compare  //仿函数
{
public:
	bool operator()(int v1,int v2)
	{
		return v1 > v2;
	}
};
void test()
{
	std::set m;
	m.insert(10);
	m.insert(20);
	m.insert(80);
	m.insert(40);
	m.insert(30);
	for (std::set::iterator it = m.begin(); it != m.end(); it++)
	{
		std::cout << *it << " " ;
	}
	std::cout << std::endl;

	std::set m2;
	m2.insert(10);
	m2.insert(20);
	m2.insert(80);
	m2.insert(40);
	m2.insert(30);

	for (std::set::iterator it = m2.begin(); it != m2.end(); it++)
	{
		std::cout << *it << " ";
	}
}
int main()
{
	test();
	system("pause");
}

运行结果:

自定义数据类型的set排序:

#include 
#include 
#include 
#include 

class Person
{
	friend class Compare;
	friend void test();
public:
	Person(std::string Name,int Age)
	{
		this->age = Age;
		this->name = Name;
	}
private:
	std::string name;
	int age;
};

class Compare
{
public:
	bool operator()(const Person &v1, const Person &v2)
	{
		return  v1.age > v2.age;
	}
};
void test()
{
	Person p1("A", 13);
	Person p2("X", 53);
	Person p3("C", 72);
	Person p4("M", 23);
	Person p5("E", 93);

	std::set  m2;
	m2.insert(p1);
	m2.insert(p2);
	m2.insert(p3);
	m2.insert(p4);
	m2.insert(p5);
    std::cout << "按年龄从大到小排序:" << std::endl;
	for (std::set::iterator it = m2.begin(); it != m2.end(); it++)
	{
		std::cout <<"名称:"<< it->name <<" 年龄:"<age<< std::endl;
	}
}
int main()
{
	test();
	system("pause");
}

运行结果:

C++ set容器排序_第1张图片

你可能感兴趣的:(c++,C++基础,C++,set排序,仿函数,友元)