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 是我的一个浮点型常量
同时 如果想保留小数点具体几位的时候 就需要这样
(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) {
-
undefined
-
cout<<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(());
-
cout<<s1<<endl; //输出:36
-
ss.clear(); //不清空可能出错
-
ss<<hex<<a; //10进制转成十六进制读入流中,再以字符串输出
-
ss>>s2;
-
cout<<s2<<endl; //输出:1e