c++primer学习:泛型算法(2)

[1]sort操作,它是利用元素类型的<运算符来实现排序的

[2]unique算法,消除相邻的重复项,并返回一个指向不重复范围末尾的迭代器.(容器的大小不变,元素并没有真的消除,只是我们看不到了而已)

    vector<string> words{ "hello","world","I am","pezy","hello" };
    print(words);
    sort(words.begin(), words.end());
    print(words);
    auto end =  unique(words.begin(), words.end());
    print(words);
    words.erase(end, words.end());
    print(words);

这里写图片描述

[3]某些类型是我们自定义的,不能直接用<,==进行比较.需要构造一个谓词来定义我们的比较方式.

bool compareIsbn(const Sales_data&book1, const Sales_data&book2)
{
    return book1.isbn() < book2.isbn();
}
    vector<Sales_data> record{Sales_data("b1993",20,1),Sales_data("b1991",20,1)
        ,Sales_data("b1991",2,25)};//初始化
    sort(record.begin(), record.end(), compareIsbn);

[4]stable_sort是具有稳定性的排序算法.

[5]partition算法:接受一个谓词,将谓词是真的派在前面,谓词是假排在后面.

//利用该算法把长度大于5的单词输出

bool islonger_than_5(const string &s)
{
    return s.size() >= 5;
}
    vector<string> words{ "hello", "world", "I am", "pezy", "hello" };
    const auto new_end = partition(words.begin(), words.end(), islonger_than_5);
    for (auto it = words.cbegin(); it != new_end; ++it)
        cout << *it;

你可能感兴趣的:(c++primer学习:泛型算法(2))