当前位置:首页 » 《随便一记》 » 正文

蓝桥杯c++组常用小技巧

1 人参与  2023年04月01日 12:35  分类 : 《随便一记》  评论

点击全文阅读


 1.蓝桥杯 ----数学-----动态规划笔记

 2.C++蓝桥杯基础知识常用整理

陆续更新中-------------------------------------------

目录

常用开始模板 

int 和 string 的互转

数字字符串的转换位数方法 

typedef的用法  

哈希的简单运用

常用容器的输入输出

字符串中固定字符的数量

 进制之间的转换

​​​​​​


常用开始模板 

#include<bits/stdc++.h>//万能头文件using namespace std;//命名空间typedef long long LL;//使用typedef关键字来定义自己习惯的数据类型名称int main(){return 0;}

int 和 string 的互转

string 转 int:

这个最为常见 一般int num = stoi(s) 转为int 类型

还有long num = stol(s); long long num = stoll(s);

同理 想转换为浮点型 就有 double num = stod(s) float num = stof(s);

注意看 也就只有sto不变 后面的字母根据转换类型改变 还是很好记得

int 转 string:

这个就 直接 string num = to_string(num) 简单暴力哈哈哈


数字字符串的转换位数方法 

在遇到字符串 类似于科学计数法等等的时候 浮点型默认有效位数为7 大了就会被转换成科学计数法那种类型 比如 1.2e+10 那需要展示所有位数怎么办呢

需要用到 setprecision(8) 想展示多少位的话就在就写多少位 比如八位的话填8

可以这样 cout<<setprecision(8)<<b1; b1 是我的一个浮点型常量

同时 如果想保留小数点具体几位的时候 就需要这样

    cout.setf(ios::fixed);//设置保留小数点的精度
    cout<<setprecision(2)<<b1;

在前面加一个保留小数点精度的语句 就可以啦

小伙伴可以去试一试


typedef的用法  

博主做了有一些题 发现最常用的typedef用法就是

typedef long long ll;

有什么用呢 其实是在定义常量的时候可以简便一点(也就是偷鸡哈哈哈哈) 少写一点代码

比如可以

ll num;//这就是一个long long 类型的变量了

哈希的简单运用

//字符的次序问题(哈希)//给26个字母附上顺序//解决字符谁先谁后的问题for (int i = 1; i <= 26; i++) {      char ch;      cin >> ch;     a[ch - 'a'] = i;    }

常用容器的输入输出

 输入的话大同小异 vector用push_back();

                                set 用insert();

                                pari用make_pair()

vector输出同数组一样哦

pair输出: 

for (auto it = nums.begin();it != nums.end();it++)    {    cout << it->first << it->second ;    }

set输出:

//正序输出 从小到大 map是自动排序的for (set<int>::iterator it = res.begin(); it != res.end(); it++) {        cout << *it << endl;}
//反序输出for(auto iter = mapStr.rbegin(); iter != mapStr.rend(); ++iter) {undefinedcout<<iter->second.c_str()<<endl;}

字符串中固定字符的数量

#include <iostream>#include <algotirhm>#include <string>using namespace std;int main(){    string temp = "aaabcdaaa!!!";    int num = count(temp.begin(),temp.end(),'a');    cout <<"在字符串" << temp << "中," <<"字母a出现的次数是" << num << endl;    return 0 ;}

 进制之间的转换

    //十进制转十六进制    int num = 10;      char str[100];      itoa(num, str, 16);      printf("%s\n", str);      return 0
//十六进制转十进制   char str[30] = "2030300 This is test";   char *ptr;   long ret;   ret = strtol(str, &ptr, 10);
    //十进制转八进制 十六进制   string s1,s2;   int a=30;   stringstream ss;   ss<<oct<<a; //10进制转成八进制读入流中,再以字符串输出   ss>>s1; //这里也可以 string s(s1.str());   cout<<s1<<endl;  //输出:36   ss.clear();  //不清空可能出错   ss<<hex<<a;  //10进制转成十六进制读入流中,再以字符串输出   ss>>s2;   cout<<s2<<endl; //输出:1e


点击全文阅读


本文链接:http://zhangshiyu.com/post/57771.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1