//排序相关
void main_48_merge()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
vector<int> v2;
v2.push_back(2);
v2.push_back(4);
v2.push_back(6);
vector<int> v3;
v3.resize(v1.size() + v2.size());
//对v1 v2按大小顺序进行合并
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
printV(v3);
}
class Student
{
public:
Student(string name, int id)
{
m_name = name;
m_id = id;
}
void printS()
{
cout << m_id << " " << m_name << endl;
}
public:
string m_name;
int m_id;
};
bool CompareS(Student&s1, Student&s2)
{
return s1.m_id < s2.m_id;
}
void main_49_sort()
{
Student s1("老大", 1);
Student s2("老二", 2);
Student s3("老三", 3);
Student s4("老四", 4);
vector<Student> v1;
v1.push_back(s4);
v1.push_back(s1);
v1.push_back(s3);
v1.push_back(s2);
for (vector<Student>::iterator it = v1.begin(); it != v1.end(); it++)
{
it->printS();
}
//sort 根据自定义函数对象 进行自定义数据类型的排序
//替换 算法的统一性(实现算法和数据类型的分离)==> 使用函数对象
sort(v1.begin(), v1.end(), CompareS);
for (vector<Student>::iterator it = v1.begin(); it != v1.end(); it++)
{
it->printS();
}
random_shuffle(v1.begin(),v1.end());
for (vector<Student>::iterator it = v1.begin(); it != v1.end(); it++)
{
it->printS();
}
}
void main_50_random_shuffle()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
//随机打乱
random_shuffle(v1.begin(), v1.end());
printV(v1);
//可以任何数据类型的元素进行打乱,如上一个的vector<Student> v1
string str = "abcdefg";
random_shuffle(str.begin(), str.end());
cout << str << endl;
}
void main_51_reverse()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
//反转元素
reverse(v1.begin(), v1.end());
printV(v1);
}
void main_52_copy()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
vector<int> v2;
v2.resize(v1.size());
//拷贝元素
copy(v1.begin(), v1.end(), v2.begin());
printV(v2);
}
bool great_equal_5(int& n)
{
return n > 5;
}
void main_53_replace()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(3);
v1.push_back(9);
//把所有 3 替换为 8
replace(v1.begin(), v1.end(), 3, 8);
printV(v1);
//条件替换
replace_if(v1.begin(), v1.end(), great_equal_5, 1);
printV(v1);
}
void main_54_swap()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
vector<int> v2;
v2.push_back(2);
v2.push_back(4);
v2.push_back(6);
//交换元素
swap(v1, v2);
printV(v1);
printV(v2);
}
void main_55_accumulate()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
//计算遍历元素之和,再加上100
int tmp = accumulate(v1.begin(), v1.end(), 100);
cout << tmp << endl;
}
void main_56_fill()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
//填充元素
fill(v1.begin(), v1.end(), 8);
printV(v1);
}
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<set>
#include<map>
#include<functional>
#include<algorithm>
#include<numeric>
//集合运算
void main_57_set_union()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
vector<int> v2;
v2.push_back(1);
v2.push_back(2);
v2.push_back(5);
vector<int> v3;
v3.resize(v1.size() + v2.size());
set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
printV(v3);
}
void main()
{
main_57_set_union();
}