1. reverse 将区间内的元素颠倒顺序
    2. rotate 将区间内的元素旋转
    3. vector<int> v{2, 4, 2, 0, 5, 10, 7, 3, 7, 1};
    4. sort 0 1 2 2 3 4 5 7 7 10
    5. 简单地旋转到左侧 1 2 2 3 4 5 7 7 10 0
    6. rotate(v.begin(), v.begin() + 1, v.end());
    7. 简单地旋转到右侧 0 1 2 2 3 4 5 7 7 10
    8. rotate(v.rbegin(), v.rbegin() + 1, v.rend());
    9. int digits[] = {3, 1, 4, 1, 5};
    10. 返回false bool
    11. is_sorted( begin(digits), end(digits))
    12. lower_bound 返回指向第一个不小于给定值的元素的迭代器
    13. upper_bound 返回指向第一个大于给定值的元素的迭代器
    14. binary_search 判断一个元素是否在区间内
    15. int a[]={1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6};
    16. vector<int> data = { 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6 };
    17. int lower = lower_bound(data.begin(), data.end(), 4)-data.begin();
    18. int upper = upper_bound(data.begin(), data.end(), 4)-data.begin();
    19. bool flag = binary_search(a,a+13,1);
    20. int lower2 = lower_bound(a, a+13, 4)-a;
    21. int upper2 = upper_bound(a, a+13, 4)-a;
    22. cout<<lower<<" "<<upper<<endl;
    23. cout<<lower2<<" "<<upper2<<endl;
    24. cout<<flag<<endl;
    25. vector<int> v1 = { 1, 1, 2, 3, 3, 3 },v2={ 3, 4, 4, 4, 5, 5, 6};
    26. // 归并 合并两个已排序的区间
    27. vector<int> dst;
    28. merge(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(dst));
    29. set_difference 计算两个集合的差集
    30. set_intersection 计算两个集合的交集
    31. set_symmetric_difference 计算两个集合的对称差
    32. set_union 计算两个集合的并集
    33. vector<int> v1 {1, 2, 5, 5, 5, 9};
    34. vector<int> v2 {2, 5, 7};
    35. vector<int> diff;
    36. set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), inserter(diff, diff.begin()));
    37. vector<int> v1{1,2,3,4,5,6,7,8};
    38. vector<int> v2{5,7,9,10};
    39. sort(v1.begin(), v1.end());
    40. sort(v2.begin(), v2.end());
    41. vector<int> v_intersection;
    42. set_intersection(v1.begin(), v1.end(),v2.begin(), v2.end(),back_inserter(v_intersection));
    43. max_element 返回区间内的最大元素
    44. min_element 返回区间内的最小元素
    45. vector<int> v{ 3, 1, -14, 1, 5, 9 };
    46. int a[]={1,2,3,4,5,7};
    47. vector<int>::iterator result;
    48. result = max_element(v.begin(), v.end());
    49. int x=*max_element(a, a+6);
    50. int *y=max_element(a, a+6);
    51. is_permutation 判断一个序列是否为另一个序列的排列组合
    52. next_permutation 按字典顺序产生区间内元素下一个较大的排列组合
    53. prev_permutation 按字典顺序产生区间内元素下一个较小的排列组合
    54. vector<int> v1{1, 2, 3, 4, 5};
    55. vector<int> v2{3, 5, 4, 1, 2};
    56. bool flag=is_permutation(v1.begin(), v1.end(), v2.begin())
    57. string s = "aba";
    58. sort(s.begin(), s.end());
    59. do {
    60. cout << s << '\n';
    61. } while(next_permutation(s.begin(), s.end()));