c++ 个人做题技巧汇总

发布于 2022-03-07  1864 次阅读


其实主要就是记录各种stl&string的用法...一老忘主要很容易 今天学了 下周这个时候忘了 又去用稀奇古怪的写法 贼头疼

string

  1. string倒置
    reverse(s.begin(),s.end())
  2. 使用char构造string
char a='a',b='0';
string s={a,b};
  1. to_string方法 int转string
    s=to_string(1)
  2. string转int stoi stoll stod etc.
    t=stoi(s)
  3. substr
string s1 = "11212jsiwijisa";
s = s1.substr(3);    //从下标2到最后
s = s1.substr(3, 1); //从2截取1个
  1. string 保留两位小数输出 使用ostringstream(仿佛回到了初学c++的时候
price *= (100 - discount) * 0.01;
ostringstream oss;
oss << fixed << setprecision(2) << price;

map

  1. map的kv进行排序 map转入vector进行排序
  map<int, int> mp1;
  vector<pair<int, int>> arr1;
  for (const auto &[k, v] : mp1)
  {
    arr1.emplace_back(v, k);
  }
sort(arr1.begin(), arr1.end(), greater<pair<int, int>>());

set

  1. vector构建set
    set<int> st(v.begin(),v.end());

其他

  1. 前缀和一般从1开始比较好 边界不用特判
  2. 一个数%9是数的原根 可证同余

愿风指引你的道路,愿你的刀刃永远锋利。