// testStl.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <functional>
#include <string>
using namespace std;
struct test_large : public binary_function<int, int, bool>
{
bool operator()(int x, int y)
{
return (x > y);
}
};
/* 要对结构体进行排序,重载比较操作符就行了,然后结构体就可以像基础类型一样操作了*/
typedef struct tagWorker
{
int age;
string name;
bool operator < (const tagWorker &y) const
{
return (age < y.age);
}
bool operator > (const tagWorker &y) const
{
return (age > y.age);
}
}Worker;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> v1;
v1.push_back(2);
v1.push_back(5);
v1.push_back(3);
v1.push_back(4);
v1.push_back(1);
v1[3] = 10;
vector<int>::iterator iter;
for(iter = v1.begin(); iter != v1.end(); iter++)
{
cout<<*iter<<", ";
}
cout<<endl;
sort(v1.begin(), v1.end(), less_equal<int>());
for(iter = v1.begin(); iter != v1.end(); iter++)
{
cout<<*iter<<", ";
}
cout<<endl;
sort(v1.begin(), v1.end(), test_large());
for(iter = v1.begin(); iter != v1.end(); iter++)
{
cout<<*iter<<", ";
}
cout<<endl;
vector<int> v2(2);
v2[0] = 1;
v2[1] = 2;
/* 坑:指定大小方式使用数组,数组中的所有数据都必须要初始化,否则sort会报异常 */
/* 这个地方也是个坑,如果v2初始化成100个,但只对部分赋值了,编译的时候不会报错,但运行的时候,sort函数会报异常*/
sort(v2.begin(), v2.end(), less_equal<int>());
cout<<v2[0]<<", "<<v2[1]<<endl;
vector<Worker> v3(3);
v3[0].age = 25;
v3[0].name = "susu";
v3[1].age = 18;
v3[1].name = "chaochao";
v3[2].age = 28;
v3[2].name = "minmin";
//sort(v1.begin(), v1.end(), less_equal<Worker>());
sort(v3.begin(), v3.end(), less<Worker>());
for(int index = 0; index < v3.size(); index++)
{
cout<<v3[index].age<<", "<< v3[index].name<<endl;
}
cout<<endl;
sort(v3.begin(), v3.end(), greater<Worker>());
for(vector<Worker>::const_iterator iter = v3.begin(); iter != v3.end(); iter++)
{
cout<<iter->age<<", "<<iter->name<<endl;
}
return 0;
}