C++常用语法汇总
cxk_ctrl
·
·
算法·理论
结构体与文件
定义一个结构体
struct student//储存学生信息的结构体
{
string id;//编号
string name;//名称
int ch,ma,en,sum;//各科成绩与总分
}s[1005];//用于储存数据的数组
读入一个结构体(输出同理)
for(int i=1;i<=1000;i++)//依次读入1000名学生
{
cin>>s[i].id;//读入,下面同样是
cin>>s[i].name;
cin>>s[i].ch>>s[i].ma>>s[i].en;
s[i].sum=s[i].ch+s[i].ma+s[i].en;//计算总分
}
文件读入输出
freopen("problem.in","r",stdin);//读入"problem.in"文件内的数据
freopen("problem.out","w",stdout);//输出到"problem.out"
队列、栈
队列STL:标准队列
#include<queue>//头文件
queue<Type>q;//建立一个queue队列q
q.push(x);//在队尾插入元素x
q.pop();//删除队头元素
q.size();//返回队列元素个数
q.front();//返回队头元素
q.back();//返回队尾元素
q.empty();//判空(0/1)
队列STL:双端队列
#include<deque>
deque<Type>q;//建立deque队列q
q.front();//返回队头元素
q.back();//返回队尾元素
q.pop_back();//弹出队尾元素
q.pop_front();//弹出队头元素
q.push_back(x);//插入x到队头
q.push_front(x);//队尾
栈STL
#include<stack>
stack<Type>s;//定义名为s的栈
s.push(x);//压入x到栈顶
s.top();//返回栈顶元素
s.pop();//弹出栈顶元素
s.size();//返回元素个数
s.empty();//判空(0/1)
sort排序、cmp
升序排序
#include<algorithm>
int arr[]={5,2,9,1,5,6};//一个要排序的无序数组
int n = sizeof(arr) / sizeof(arr[0]);//得到数组长度,实际上用不上
//升序排序
sort(arr,arr+n);
for(int i=0;i<n;i++)cout<<arr[i]<<" ";
//输出:1 2 5 5 6 9
降序排序
bool cmp(int a, int b)
{
return a>b;
}
sort(arr,arr+n,cmp);
for(int i=0;i<n;i++)cout<<arr[i]<<" ";
//输出:9 6 5 5 2 1
二分查找
int erfen(int a[],int l,int r,int x);//x是要找的数
{
while(l<r)//代表还是要继续查找
{
int mid=(l+r)/2;//每次查找维护一个mid
if(a[mid]<x)
{
l=mid+1;
}
else
{
r=mid;
}
}
if(a[l]==x)
{
return l;//返回l的位置,也就是x在第几位
}
return -1;//没找到
}