Vector

  1. size/length: int n = vec.size();
  2. max: int max = *max_element(vec.begin(), vec.end());
  3. initiate: vector<int> vec(size, default_val); or vector<int> vec(size);
  4. iteration: a. itereate by index:
    for(int i = 0; i < vec.size(); ++i) { 
     // ++i better than i++ as i++ will 
     // cost temp to store i first then +1;
     cout << vec[i];
    }
    b. iterate by pointer:
    for(vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
     cout << *it;
    }
    c. iterate by item:
    for(auto/int v: vec) {
     cout << v;
    }
    d. iterate by item (pass by reference): the above c. method is pass by value, each item is copied to v. Quite slow & costly. -> pass by refernece is much faster use const if uneditable, remove to edit as well.
    for(const auto& v: vec) {
     cout << v;
    }
  5. sum: new_sum = accumulate(vec.begin(), vec.end(), sum_ini); (sum in order) reduce(nums.begin(), nums.end()); (parallel sum, faster)
  6. delete: vec.erase(vec.begin()+i);
  7. reverse: reverse(vec.begin(), vec.end());
  8. a good fun to avoid bound condition:
       auto get = [&](int i) -> pair<int, int> {
          if (i == -1 || i == n) {
             return {0, 0};
          }
          return {1, nums[i]};
         };
    To compare use get(a) < get(b) even for the i=-1/n condition!(treat as -INF);
  9. good method to customize sort:
    sort(intervals.begin(), intervals.end(), 
    [ ](const auto& u, const auto&v){
            return u[0] < v[0];
        });
    C++20 sort: std::ranges::sort(people, [](const Person& a, const Person& b) { return a.age < b.age; });
  10. customize size: vector<vector<int>> mat(n, vector<int>(m));
  11. remove duplicate:
    sort(ans.begin(), ans.end());
    auto last = unique(ans.begin(), ans.end());
    ans.erase(last, ans.end());
  12. compare two vectors: == compare ele by ele
  13. sort by nth ele: nth_element(v.begin(), v.begin() + k, v.end());, first k ele is in the front(random pos), last size-n is in the back. O(n) only, effective.
  14. find ele: find(vec.begin(), vec.end(), ele)
  15. get max ele: *max_element(maxF.begin(), maxF.end());
  16. transfer data type*eg: int to double vector<double> D(vec.begin(), vec.end());