STL常用算法 -- 排序 拷贝 替换 算数生成 集合

STL常用算法

本文为作者学习黑马程序员匠心C++教程的学习笔记

若无特殊说明,所有的算法都应该包含 algorithem 头文件

目录

  • STL常用算法
    • 排序
      • sort
      • random_shuffle
      • merge
      • reverse
    • 拷贝和替换
      • copy
      • replace
      • replace_if
      • swap
    • 算数生成和集合
      • accumulate
      • fill
      • set_intersection
      • set_union
      • set_difference

排序

sort

对容器内元素进行排序

sort(iterator beg, iterator end, _Pred);
sort(开始迭代器, 结束迭代器, 谓词);
//按值查找元素, 找到返回指定位置迭代器, 找不到返回结束迭代器位置
//默认为升序排列

//内置数据类型
//降序排列
class Great3
{
   
public:
    bool operator()(int v1, int v2)
    {
   
        return v1 > v2;
    }
};

void test()
{
   
    vector<int>v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);

    sort(v.begin(), v.end(), Great3());

    for (auto i : v)
        cout << i << endl;
}


//自定义数据类型

class Person
{
   
public:
    Person(string name, int age) : m_Age(age), m_Name(name) {
   }

    string m_Name;
    int m_Age;
};

// 降序排列
class Greater20
{
   
public:
    bool operator()(const Person& p1, const Person& p2)
    {
   
        return p1.m_Age > p2.m_Age;
    }
};

void test()
{
   
    vector<Person>v;
    Person p1("aa", 10);
    Person p2("bb", 20);
    Person p3("cc", 20);
    Person p4("dd", 40);
    v.push_back(p1);
    v.push_back(p2);
    v.push_back(p3);
    v.push_back(p4);

    sort(v.begin(), v.end(), Greater20());

    for (auto i : v)
    {
   
        cout << i.m_Age
            << i.m_Name << endl;
    }

}


random_shuffle

指定范围内的元素随机调整次序

random_shuffle(iterator beg, iterator end);
random_shuffle

你可能感兴趣的:(C++,c++,算法,algorithm)