六一的部落格


关关难过关关过,前路漫漫亦灿灿。



会改变序列中元素的顺序


对序列中的元素进行排序

sort

使用元素类型的小于运算符 < 对元素进行排序

给出序列的所有元素, 使用迭代器范围: [b, e)

1sort(b, e);

不能用于链表


示例

the quick red fox jumps over the slow red turtle

排序后

fox jumps over quick red red slow the the turtle

消除重复相邻元素

序列中元素有序: 重复元素相邻

覆盖相邻重复元素

不会改变容器大小

给出序列的所有元素, 使用迭代器范围: [b, e)

返回指向最后一个不重复元素下一位置的迭代器

1unique(b, e);

示例

fox jumps over quick red red slow the the turtle

去重后

fox jumps over quick red slow the turtle ??? ???

完整示例

对单词进行排序,去除重复单词

 1void elimDups(vector<string> &words)
 2{
 3    sort(words.begin(), words.end());
 4
 5    auto end_unique = unique(words.begin(), words.end());
 6    // end_unique指向第一个???
 7
 8    words.erase(end_unique, words.end());
 9    // 使用容器操作删除元素
10}

重排算法


会改变序列中元素的顺序


对序列中的元素进行排序

sort

使用元素类型的小于运算符 < 对元素进行排序

给出序列的所有元素, 使用迭代器范围: [b, e)

1sort(b, e);

不能用于链表


示例

the quick red fox jumps over the slow red turtle

排序后

fox jumps over quick red red slow the the turtle

消除重复相邻元素

序列中元素有序: 重复元素相邻

覆盖相邻重复元素

不会改变容器大小

给出序列的所有元素, 使用迭代器范围: [b, e)

返回指向最后一个不重复元素下一位置的迭代器

1unique(b, e);

示例

fox jumps over quick red red slow the the turtle

去重后

fox jumps over quick red slow the turtle ??? ???

完整示例

对单词进行排序,去除重复单词

 1void elimDups(vector<string> &words)
 2{
 3    sort(words.begin(), words.end());
 4
 5    auto end_unique = unique(words.begin(), words.end());
 6    // end_unique指向第一个???
 7
 8    words.erase(end_unique, words.end());
 9    // 使用容器操作删除元素
10}