当前位置:   article > 正文

c++ algorithm中常用的几个内置函数_algorithm c++内置函数

algorithm c++内置函数


C++<algorithm>能用到的几个内置函数

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. using namespace std;
  5. void print(int &elem){ //有无&均可
  6. cout << elem << " ";
  7. }
  8. //qsprt必须用这种格式定义比较函数,像bj定义qsort传入参数会出错
  9. // *和(int *)是同一优先级运算符,但结合方向是从右向左
  10. int cmp(const void *a, const void *b){
  11. return *(int *)a - *(int *)b;
  12. }
  13. int bj(int a, int b){
  14. return a > b;
  15. }
  16. int main(){
  17. int a[] = {0, 3, 9, 1, 4, 8, 5, 2, 6, 7};
  18. //algorithm头文件for_each( , , )函数用法
  19. for_each(a, a+10, print);
  20. cout << endl;
  21. //快排模板函数,数组下标从0开始,即排序下标为0-9的元素
  22. qsort(a, 10, sizeof(a[0]), cmp);
  23. for_each(a, a+10, print);
  24. cout << endl;
  25. //algorithm中的swap函数
  26. char x = 'X', y = 'Y';
  27. swap(x, y);
  28. printf("x = %c, y = %c\n", x, y);
  29. char str[] = "abcdefgh";
  30. //algorithm中的反转函数
  31. reverse(str+2,str+7); //前闭后开
  32. cout << str << endl;
  33. int aa[] = {0, 3, 9, 1, 4, 8, 5, 2, 6, 7};
  34. for_each(aa, aa+10, print);
  35. cout << endl;
  36. //qsort,sort时间复杂度都是O(n*log(n)),但实际中sort速度一般比qsort快!!
  37. // sort(aa, aa+10);
  38. //不传入第三个参数默认sort为升序排序
  39. sort(aa, aa+10, bj);
  40. //传入参数从大到小排序,且sort第三个参数不能用cmp函数
  41. for_each(aa, aa+10, print);
  42. cout << endl << max(66,88) << endl << min(66,88) << endl;
  43. //max和min函数
  44. //二路归并,头文件algorithm
  45. int ak[] = {1, 9, 5, 4, 7};
  46. int ka[] = {3, 6, 2, 8, 0};
  47. int kk[15];
  48. sort(ak, ak+5);
  49. sort(ka, ka+5);
  50. merge(ak, ak+5, ka, ka+5, &kk[1]);
  51. for_each(ak, ak+5, print);
  52. cout << endl;
  53. for_each(ka, ka+5, print);
  54. cout << endl;
  55. for_each(kk+1, kk+11, print);
  56. cout << endl;
  57. return 0;
  58. }

★ vector的clear只是清空元素,而不回收空间,可以使用vector<int>().swap(vt)进行清空元素并回收内存。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/961545
推荐阅读
相关标签
  

闽ICP备14008679号