排序算法
sort
random_shuffle洗牌
merge容器元素合并,存储到另一个容器中
revrese 反转元素
Sort
sort(beg , end ,_Pred谓词)
class Person
{
public:
Person(string name , int age )
{
this->m_name = name;
this->m_age = age;
}
string m_name;
int m_age;
};
class mycompare
{
public:
bool operator()(const Person& p1 , const Person& p2)
{
return p1.m_age > p2.m_age;
}
};
void test01()
{
vector<Person>v;
Person p1("anm", 1);
Person p2("tggr", 13);
Person p3("d23", 12);
Person p4("sda", 23);
Person p5("anm", 32);
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
v.push_back(p5);
sort(v.begin(), v.end() , mycompare());
for (vector<Person>::iterator it = v.begin(); it != v.end(); it++)
{
cout << "name :" << (*it).m_name << " age:" << (*it).m_age << endl;
}
}
当然如果这里不适用仿函数,可以使用内建函数
sort(v.begin() , v.end() , greater<int>())
在sort函数中,其默认的是less<T>()。 所以默认是升序排序
random_shuffle
random_shuffle(beg , end )洗牌
merge
merge(beg1, end1 , beg2, end2 , dest)//dest目标容器开始迭代器
容器元素合并,存储到另一个容器中
注意:两个容器必须要是有序的 目标容器也是有序的。
reverse
reverse(beg , end)
拷贝替换算法
copy 、 replace 、 replace_if 、 swap
copy
copy(beg , end , dest)dest 目标起始
replace
replace(beg ,end ,oldvalue , newvalue)
replace_if
replace_if(beg ,end , _Pred , newvalue)
swap
算术生成算法
算术生成算法属于小型算法 需要包含 #include<numeric>
accumulate
accumulate 计算容器中元素累计总和
accumulate(beg , end , value) value 起始值 这个算法实用
fill
fill(beg ,end , value) 填充 value
集合算法
set_intersection
set_intersection 求两个容器交集
set_union
set_union 求两个容器并集
set_intersection
set_intersection(beg1,end1,beg2,end2,dest)
注意两个集合必须是有序序列 dest目标容器开始迭代器 返回交集最后一个位置的迭代器