string 取出其中一个是字符
string s;
char a = s[0];
截取子串
string.substr(index,len);
- string 找
int string.find_first_of("ab",index);
int string.find_last_of("qw",index);
int string.find_first_not_of("ab",index);
int string.find_last_not_of("qw",index);
size_t a = string.find_first_of("ab",index);
if(a == string::npos) //没找到
返回返回index,-1没找到
-
编写函数,传入数组等,注意为空的情况
-
scanf
scanf("%d%d ",&a,&b); // 后面多了个空格,会导致输入错误
scanf("%d%d",&a,&b); //正常的两个输入
scanf 有返回值
if(1 != scanf())
return -1;
- string 数字 char[]
- string 转char[]
string s ="aa";
const char *a = s.data();// must add cosnt
- char[] 转string
char a[] ;
string s =a;
- 数字转char[]
char p[10];
sprintf(p,"%d",1);
int a =10;
char b[] ="12";
itoa(a,b,2); // 2进制
cout<<b; //1010
- char[] 转数字
int a =10;
char b[] ="12";
sscanf(b,"%d",&a);
cout<<a; // 12
- 数学公式
#include <stdlib.h>
abs
-
codeblock debug 失败,工程路径含中文
-
scanf double
double a;
scanf("%lf",&a); // if
-
多项式求和,系数为0 ,则要舍去
-
结构体
c中
typedef struct s{
int i;
} SS;
SS a;
c++中
struct S{
int i;
};
typedef S SS;
int main(){
S s ; // object
SS ss; // pointer
ss = &s;
s.i=2;
}
-
四舍五入
-
大数读入
#include <string>
void read(){
string s ;
int sum = 0;
getline(cin,s);
sum += s[i]-'0';
printf("%s",s.c_str());//将string用printf输出
}
- 结构体,数组初始化
struct node{
int i;
node(){
i=0;
}
};
int a[100]={0};
-
scanf 与string
sacnf不能直接读入string -
vector
vecto<int> v ;
v.size();
v.empty();
v.clear();
v = v1; // 复制
v.push_back() ;末尾添加一个元素
- 栈
#include<stack>
using namespace std;
int main(){
stack<int> s;
s.push(2);
s.top(); // see
s.pop(); // void
s.size();
s.empty();
}
中序表达式计算
转化为对应的后序表达式,数字相对位置不变,将符号压栈,判断优先级,若要压栈的符号优先级高,则压栈,若压栈符号优先级低,则弹栈。括号在压栈之前优先级最高,压栈后,优先级最低。
- 队列
#include <queue>
using namespace std;
int main(){
queue<int> q;
q.push(1);
q.pop(); // 不会返回元素,只弹出
q.empty();
q.size();
q.front();// 队首
q.back(); // 队尾
}
- map
<key,value> key是唯一的
#incldue <map>
map<int ,string> m;
m.insert(pair<int,string>(1,"one"));
int size = m.size();
// 遍历
map<int,string>::iterator iter;
for(iter = m.begin() ;iter != m.end();iter++){
cout<<iter->first <<iter->second;
}
// 查找
iter = m.find(1);// key = 1
if(iter != m.end())
cout<<iter->second;
// 删除
-
set
-
重定向
freopen("D:\\input.txt","r",stdin);//输入重定向
freopen("D:\\output.txt","w",stdout);//输出重定向
- sort
#include <algorithm>
- scanf读取一行(包含空格)
scanf("%[^\n]",read.c_str());// 读取除换行符外的全部字符
scanf("%*c");// 读取换行符
- vector,指针
vector中最好不放指针,当指针生命周期结束后,vector中就是野指针了
vector 不能直接用=来赋值和复制; - 指针
typedef struct Node *Pnode; // 指向Node的指针
struct Node{
}
指针只是地址,不能存数据。
25. 小数比较大小
不用==,而要用<1e-7.由于浮点数存储的方式导致
判断两个浮点数相等不能直接用 a == b形式,应该用 a-b> -eps && a-b < eps 形式,eps是很小的数,比如 1e-7
- 二分查找
mid = (max+min)/2; // 可能出现溢出
mid = min +(max-min)/2;
- 连续读入多个数,以回车结尾
int main()
{
int a;
char i=0;
while(i!='\n'){
scanf("%d",&a);
printf("%d",a);
i = getchar();
}
printf("over");
return 0;
}