C++常用语法汇总

· · 算法·理论

结构体与文件

定义一个结构体

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;//没找到 
}