1. Copa Blue Bridge - Matemáticas - Notas de programación dinámica
2. Conocimientos básicos de uso común de C++ Blue Bridge Cup
Actualización continua --------------------------------------------
Tabla de contenido
Método de conversión de dígitos para cadenas numéricas
Entrada y salida de contenedores de uso común
Número fijo de caracteres en una cadena
Plantillas de inicio comunes
#include<bits/stdc++.h>//万能头文件
using namespace std;//命名空间
typedef long long LL;//使用typedef关键字来定义自己习惯的数据类型名称
int main(){
return 0;
}
Conversión entre int y cadena
cadena a int:
Este es el int general más común num = stoi(s) convertido a tipo int
Y número largo = stoll(s);número largo y largo = stoll(s);
La conversión ideal a tipo de coma flotante es double num = stod(s) float num = stof(s);
Tenga en cuenta que solo las letras detrás de sto cambiarán según el tipo de conversión, que sigue siendo fácil de recordar.
int a cadena:
Esto es directamente string num = to_string(num) simple violencia jajaja
Método de conversión de dígitos para cadenas numéricas
Cuando una cadena de caracteres es similar a la notación científica, etc., el tipo de punto flotante predeterminado es de 7 dígitos efectivos. Si es demasiado grande, se convertirá al tipo de notación científica, como 1.2e+10. ¿Qué debería Qué hago si necesito mostrar todos los dígitos?
Debe usar setprecision (8). Si desea mostrar tantos dígitos como desee, puede escribir tantos dígitos como desee. Por ejemplo, si desea mostrar ocho dígitos, complete 8
Puede ser así cout<<setprecision(8)<<b1; b1 es una de mis constantes de punto flotante
Al mismo tiempo, si desea mantener el número exacto de lugares decimales, debe hacer esto
cout.setf(ios::fixed);//Establecer la precisión del punto decimal
cout<<setprecision(2)<<b1;
Simplemente agregue una declaración que conserve la precisión del punto decimal delante de ella.
Amigos, pueden intentarlo.
uso de typedefs
El bloguero hizo algunas preguntas y descubrió que el uso de typedef más utilizado es
typedef long long ll;
¿De qué sirve? De hecho, puede ser más fácil definir constantes (es decir, robar pollo jajajaja) y escribir menos código
Por ejemplo, puedes
ll num;//这就是一个long long 类型的变量了
Uso simple de hash
//字符的次序问题(哈希)
//给26个字母附上顺序
//解决字符谁先谁后的问题
for (int i = 1; i <= 26; i++) {
char ch;
cin >> ch;
a[ch - 'a'] = i;
}
Entrada y salida de contenedores de uso común
La entrada es similar a vector con push_back();
el conjunto usa insertar();
hacer_par()
La salida del vector es la misma que la matriz.
par de salida:
for (auto it = nums.begin();it != nums.end();it++)
{
cout << it->first << it->second ;
}
establecer salida:
//正序输出 从小到大 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;
}
Número fijo de caracteres en una cadena
#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 ;
}
Conversión entre bases
//十进制转十六进制
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