不要重复制造轮子,而且你造的轮子未必比得上别人的;

  • <numeric>⇒ accumulate,累积容器中区间的和,可以指定初值;

  • 为什么 STL 中的容器和算法一定关于区间的操作一定是左闭右开的呢?

    • int A[n]; ⇒ sort(A, A+n);
    • vector<int> ⇒ sort(A.begin(), A.end());

      都是很自然的一件事;

1. next_permutation ⇒ 获取下一次的全排列

  • 所在的头文件:<algorithm>

    • bool next_permutation(_BidIt _First, _BidIt _Last)
  • 功能:对一个可迭代序列,直接在原始序列上进行更易,自然属于更易型算法。
  • 算法意义:对全部样本空间进行穷举搜索
#include <algorithm|vector|iterator|iostream>
using namespace std; int main(int, char**){ vector<int> vec{ 1, 2, 3 }; // 也可以使用一维数组,int arr[] = {1, 2, 3};
int cnt = 0;
do{
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
// copy(arr, arr+3, ....)
cout << endl;
cnt += 1;
} while (next_permutation(vec.begin(), vec.end()));
// while(next_permutation(arr, arr+3));
cout << "A_3^3 = " << cnt << endl;
return 0;
}

2. 容器

  • string 与 char []

    string(字符串)与字符数组类型相比,可以避免一些额外的参数,比如需要一对指针标识当前访问的区间:

    void foo(char *A[], int lo, int hi){
    ...
    foo(A, lo, hi);
    } void foo(string& s){
    ...
    s.substr(lo, hi-lo+1);
    }

3. 算法

  • 排序:sort

    int A[n];
    sort(A, A+n);
  • 去重:unique(hash 表实现?)

    unique(A, A+n); 

    一定要注意,unique(A, A+n) - A ⇒ 去重后数组的大小;

4. pair

头文件 <utility>

  • 常用来记录二维属性信息,比如一个会议的开始和结束时间;

    int begin[101], end[101];
    vector<pair<int, int>> order;
    for (int i = 0; i < n; ++i){
    order.push_back(make_pair(end[i], begin[i]));
    }

最新文章

  1. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
  2. Beanstalkd一个高性能分布式内存队列系统
  3. MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数
  4. Thread的第五天学习
  5. [AngularJS] Services, Factories, and Providers -- value &amp; Providers
  6. js-权威指南学习笔记8
  7. web报表工具FineReport使用中遇到的常见报错及解决办法(二)
  8. 【题解】Hanoi塔问题
  9. 介绍一款自动给添加不同浏览器CSS3前缀的插件~Autoprefixer(附其他前端开发插件)
  10. php图文合成文字居中(png图片合成)
  11. Python问题汇总
  12. [LeetCode_105]Construct Binary Tree from Preorder and Inorder Traversal
  13. Xcode常见设置
  14. React Js 之JSX
  15. Android之计算两个时间的相差
  16. 设计模式入门,适配器模式,c++代码实现
  17. Maven 私服安装和启动
  18. Flask - 第一篇
  19. win7 php连接远程oracle
  20. Qt快速入门学习笔记(基础篇)

热门文章

  1. Centos7部署phpMyAdmin系统
  2. shell中IF的用法介绍
  3. 商业模式(三):P2P网贷平台,毛利润测算
  4. 洛谷 P1964 【mc生存】卖东西
  5. CentOs虚拟机能够互相ping通,但无法訪问虚拟机服务
  6. c++中六种构造函数的实现以及9中情况下,构造函数的调用过程
  7. Reuse Is About People and Education, Not Just Architecture
  8. java.lang.IllegalArgumentException: The observer is null.终于解决方式
  9. SSL通关之代码演示样例(四)
  10. Python: PS 滤镜--扇形变换