• STL排序、拷贝和替换算法


    目录

    常用排序算法sort

    常用排序算法random_shuffle

    常用排序算法merge

    常用排序算法reverse

    常用拷贝和替换算法copy

    常用拷贝和替换算法replace

    常用拷贝和替换算法replace_if

    常用拷贝和替换算法swap


    常用排序算法sort

    sort(iterator begp iterator end,_Pred);
    // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
    // beg开始选代器
    //end结束选代器
    //_Pred 谓词

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v;
    24. v.push_back(20);
    25. v.push_back(70);
    26. v.push_back(60);
    27. v.push_back(50);
    28. v.push_back(90);
    29. v.push_back(10);
    30. sort(v.begin(),v.end());//默认升序
    31. for_each(v.begin(),v.end(),myprint);
    32. cout << endl;
    33. sort(v.begin(),v.end(),greater<int>());//降序
    34. for_each(v.begin(),v.end(),myprint);
    35. cout << endl;
    36. }
    37. int main()
    38. {
    39. test01();
    40. return 0;
    41. }

    常用排序算法random_shuffle

    random_shuffle(iterator beg, iterator end);
    //指定范围内的元素随机调整次序
    // beg开始选代器
    //end结束迭代器

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v;
    24. for(int i =0;i<10;i++)
    25. {
    26. v.push_back(i);
    27. }
    28. random_shuffle(v.begin(),v.end());
    29. for_each(v.begin(),v.end(),myprint);
    30. cout << endl;
    31. }
    32. int main()
    33. {
    34. test01();
    35. return 0;
    36. }

    编译运行

    常用排序算法merge

    merge(iterator begl, iterator end1, iterator beg2, iterator end2, iterator dest);// 容器元素合并,并存储到另一容器中
    /注意:两个容器必须是有序的
    // beg1容器1开始迭代器
    //end1 容器1结束选代器
    //beg2容器2开始选代器
    // end2容器2结束迭代器
    // dest目标容器开始迭代器

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v;
    24. vector<int>v2;
    25. for(int i =0;i<10;i++)
    26. {
    27. v.push_back(i);
    28. v2.pish_back(i+1);
    29. }
    30. vector<int>v3;
    31. //开辟空间
    32. v3.resize(v2.size()+v.size());
    33. merge(v.begin(),v.end(),v2.begin(),v2.end(),v3.begin());
    34. //0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
    35. for_each(v3.begin(),v3.end(),myprint);
    36. cout << endl;
    37. }
    38. int main()
    39. {
    40. test01();
    41. return 0;
    42. }

    常用排序算法reverse

    reverse(iterator beg, iterator end);
    // 反转指定范围的元素
    // beg开始选代器
    // end结束选代器

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v;
    24. for(int i =0;i<10;i++)
    25. {
    26. v.push_back(i);
    27. }
    28. cout << "反转前:" << endl;
    29. for_each(v.begin(),v.end(),myprint);
    30. cout << endl;
    31. reverse(v.begin(),v.end());
    32. cout << "反转后:" << endl;
    33. for_each(v.begin(),v.end(),myprint);
    34. cout << endl;
    35. }
    36. int main()
    37. {
    38. test01();
    39. return 0;
    40. }

    编译运行

    常用拷贝和替换算法copy

     copy(iterator beg, iterator end, iterator dest);
    // beg开始选代器
    //end 结束选代器
    //dest目标起始选代器

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v;
    24. for(int i =0;i<10;i++)
    25. {
    26. v.push_back(i);
    27. }
    28. vector<int>v2;
    29. //给目标容器开辟空间
    30. v2.resize(v.size());
    31. copy(v.begin(),v.end(),v2.begin());
    32. //0 1 2 3 4 5 6 7 8 9
    33. for_each(v2.begin(),v2.end(),myprint);
    34. cout << endl;
    35. }
    36. int main()
    37. {
    38. test01();
    39. return 0;
    40. }

    常用拷贝和替换算法replace

    replace(iterator beg,iterator end,oldvalue ,newvalue);
    //将区间内旧元素督换成新元素
    //beg开始选代器
    //end结束选代器
    // oldvalue 旧元素
    //newvalue 新元素

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v;
    24. for(int i =0;i<10;i++)
    25. {
    26. v.push_back(i);
    27. }
    28. replace(v.begin(),v.end(),2,3);
    29. //0 1 3 3 4 5 6 7 8 9
    30. for_each(v.begin(),v.end(),myprint);
    31. cout << endl;
    32. }
    33. int main()
    34. {
    35. test01();
    36. return 0;
    37. }

    常用拷贝和替换算法replace_if

    replace if(iterator beg, iterator end,pred, newvalue);
    // 按条件替换元素,满足条件的替换成指定元素
    // beg开始选伦器
    //end结束选代器
    //_pred谓词
    // newvalue 替换的新元素

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. class predicate
    22. {
    23. public:
    24. bool operator()(int val)
    25. {
    26. return val >= 5;
    27. }
    28. };
    29. void test01()
    30. {
    31. vector<int>v;
    32. for(int i =0;i<10;i++)
    33. {
    34. v.push_back(i);
    35. }
    36. //如果大于等于五 替换成四
    37. replace_if(v.begin(),v.end(),predicate(),4);
    38. //0 1 2 3 4 4 4 4 4 4
    39. for_each(v.begin(),v.end(),myprint);
    40. cout << endl;
    41. }
    42. int main()
    43. {
    44. test01();
    45. return 0;
    46. }

    常用拷贝和替换算法swap

    swap(container c1, container c2);
    // 互换两个客器的元素
    // c1容器1
    // c2容器2

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. using namespace std;
    17. void myprint(int t)
    18. {
    19. cout << t << " ";
    20. }
    21. void test01()
    22. {
    23. vector<int>v1;
    24. vector<int>v2;
    25. for(int i =0;i<10;i++)
    26. {
    27. v1.push_back(i);
    28. v2.push_back(i+100);
    29. }
    30. cout << "互换前" << endl;
    31. for_each(v1.begin(),v1.end(),myprint);
    32. cout << endl;
    33. for_each(v2.begin(),v2.end(),myprint);
    34. cout << endl;
    35. swap(v1,v2);
    36. cout << "互换后" << endl;
    37. for_each(v1.begin(),v1.end(),myprint);
    38. cout << endl;
    39. for_each(v2.begin(),v2.end(),myprint);
    40. cout << endl;
    41. }
    42. int main()
    43. {
    44. test01();
    45. return 0;
    46. }

    编译运行

  • 相关阅读:
    聊聊不是产品经理的程序员如何做产品经理
    【4. 主从复制】
    前端三剑客:html、css、javascript
    快速排序法
    Java进阶(7)——数组模拟栈/酒店管理系统练习
    Java文件流练习
    Kubernetes ConfigMap多文件挂载至同一个pod内目录实践
    【关于几个问题的思考】
    北京建工携手法大大,电子签名赋能智能绿色建筑
    最新版本 Stable Diffusion 开源AI绘画工具之部署篇
  • 原文地址:https://blog.csdn.net/2301_77164542/article/details/133295538