对于c++的一些语法

最基础

头文件

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main(){}

输入

1、cin:cin的取数据时会忽略空格和回车继续输入。

2、scanf:scanf取数据时遇到回车、空格、TAB就会停止。

int a,b,p;
cin>>a>>b>>p;

读取一行

getline(cin,str);

cin与getline()的区别:
               getline()中的结束符,结束后,结束符不放入缓存区;
               cin的结束符,结束后,结束符还在缓存区;
所以在使用 cin 后若要使用 getline() 必须要把前面cin遗留的结束符处理掉,解决方法为:在使用getline()之前,加入一行getline()来处理cin留下的结束符;

输出(格式)

cout<<res<<endl;

a.%8.3f, 表示这个浮点数的最小宽度为8,保留3位小数,当宽度不足时在前面补空格。
b. %-8.3f,表示最小宽度为8,保留3位小数,当宽度不足时在后面补上空格
c. %08.3f, 表示最小宽度为8,保留3位小数,当宽度不足时在前面补上0

字符的输入

char a[10];
scanf("%s", a);

length函数

string str = "ADAS";
int len = str.length();

char a[100] = "hello world!", b[100];
cout << strlen(a) << endl;

size函数

C++中size()函数除了跟length()函数一样可以获取字符串长度之外,还可以获取vector类型的长度。

string str = "ADAS";
vector <int> num(10,5)

int lenstr = str.size();
int lenvec = num.size();
#其中lenstr = 4; lenvec = 10

sizeof()函数

sizeof() 用于获取对象所占内存空间大小

char c[] = "ADAS";
char* cc = c;
char cn[40] = "ADAS";
int a[] = {1,2,3,4,5,6};
int* aa = a;
cout << sizeof(c) << sizeof(cc) << sizeof(cc) << sizeof(cn);
cout << sizeof(a) << sizeof(aa) << sizeof(aa);

sizeof(c) = 5 //c是数组,计算到'\0'位置,结果为4 * 1+1=7
sizeof(cc) = 8 //cc为指针类型,大小为8
sizeof(*cc) = 1 //*cc指向c的第一个字符,大小为1
sizeof(cn) = 40 //开辟40个char空间,大小为40 * 1=40
sizeof(a) = 24 //a是数组,但不需计算到'\0',结果为6 * 4=24
sizeof(aa) = 8 //aa为指针类型,大小为8
sizeof(*aa) = 4 //*aa指向a的第一个数字,大小为4

去重函数

n = unique(c, c + n) - c;
//n--<数组长度
//c ---<< 数组名称

STL

C++ vector

#include<vector>  ///一个容器,能存放各种类型的对象,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据
vector<int> array;
array.push_back(a); //尾部插入数字a
array.pop_back(); //删除向量的最后一个元素
array[0],array[1]......array[n]
array.at(i) //使用at(),当这个函数越界时会抛出一个异常
s.back()//最后一个元素
res.size()//长度

C++ pair

#include<iostream>
using namespace std;
typedef pair<int,int> P //起别名
 
int main(){
    P p(0,1);
    P pp = make_pair(0,1);
    return 0;
}
//pair的排序

//pair默认是先对第一个关键字从小到大排序,如果第一关键字相同,在对第二关键字从小到大排序,都是升序
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef pair<int,int> P
 
int main() {
    P p1 = P(1,3);   P p2 = P(2,2);	P p3 = P(3,1);	P p4 = P(3,4);	P p5 = P(3,5);
    vector<P> ve;
    ve.push_back(p3); ve.push_back(p2);	ve.push_back(p1);	ve.push_back(p4);	ve.push_back(p5);
    //sort(ve.begin(),ve.end());
    for(int i=0;i<ve.size();i++){
        cout<<ve[i].first<<" "<<ve[i].second<<endl;
    }
    return 0;
}

C++ <queue>

#include<queue>
queue<int>q1;
queue<double>q2;  
queue<char>q3;
//默认为用deque容器实现的queue;
queue <string> q;
q.push("first"); 	//push() 在队尾插入一个元素
q.push("second");
q.pop();			//pop() 删除队列第一个元素
cout<<q.size()<<endl;//size() 返回队列中元素个数
cout<<q.front()<<endl;//front() 返回队列中的第一个元素
cout<<q.empty()<<endl;//empty() 如果队列空则返回1(ture),否则0(false)。
cout<<0l;//back() 返回队列中最后一个元素
priority_queue<int>q;
priority_queue<int,vector<int>,less<int> >q;
可以发现第二种定义方式的尖括号内多出了两个参数:其中 vector<int>填写的是承载底层数据结构堆 (heap)的容器,如果是其他类型 可写为 vector<char>或vector<char>;
第三个参数 less<int> 则是对第一个参数的比较类,!!less<int> 表示数字大的优先级越大,而 greater<int> 表示数字小的优先级越大。 

尽量用scanf去读字符串,会自动把回车空格制表符忽略掉

String

字面值和string对象相加:

当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符的两侧的运算对象至少有一个是string:

string s4 = s1 + ", ";  // 正确:把一个string对象和有一个字面值相加
string s5 = "hello" + ", "; // 错误:两个运算对象都不是string

back

str.back() //最后一个字符
str.pop_back() //去掉最后一个字符

输入

char op[2]--->['str',\0];
//%s读取字符串 会有一个’\0’作为字符串的结束 op[1]就是‘\0’

//顺带一提 cin 和 scanf读入字符串时遇到空格就停止了。

s1.empty()//返回布尔值
string 输入一行要用getline(cin,pp);
string的empty和size操作(注意size是无符号整数,因此 s.size() <= -1一定成立)

strcmp()函数:

将指定的两个字符串进行比较。
声明:

int strcmp(const char *str1, const char *str2)
参数:
str1 – 要进行比较的第一个字符串。
str2 – 要进行比较的第二个字符串。
返回值:(比较指定的ASCII值)
如果 str1 < str2。返回值< 0,
如果 str2 > str1。返回值> 0
如果 str1 = str2,返回值 = 0

strcpy()函数:

是将一个字符串复制到另一块空间地址中 的函数,‘\0’是停止拷贝的终止条件,同时也会将 ‘\0’ 也复制到目标空间。下面是库中的strcpy()函数声明:

char* strcpy(char* destination,const char* source);

  1. 函数的参数:

char* destination---------目标字符串的首地址
const char* source------源地址:被复制的字符串的首地址,用const修饰,避免修改掉被拷贝的字符串
2.函数的返回值类型:

char*:返回的是目标字符串的首地址

memset(h,-1,sizeof h);

将h数组,全部初始化为-1.。。

memcpy()备份函数

memcpy(backup, dist, sizeof dist);//备份一下

函数 数组名 原数组 (原数组大小:复制多少个字节 一个整数是四个字节)

sort函数

#include<algorithm>
using namespace std;
sort(数组名,数组名+元素个数,排序函数); //默认排序函数为升序

哈希表

#include <unordered_map>
unordered_map<string ,int > d;//距离数组,根据string去查找该字符串的值。
unordered_map<string ,int > d;//距离数组
d.count(t)

unordered_set 容器,可直译为“无序 set 容器”。即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而 unordered_set 容器不会。

#include <unordered_set>
//1、不再以键值对的形式存储数据,而是直接存储数据的值 ;
//2、容器内部存储的各个元素的值都互不相等,且不能被修改;
//3、不会对内部存储的数据进行排序
unordered_set<int> set1;
set1.empty();
set1.count(2);//返回指2出现的次数,0或1
set1.insert(3);
set1.size() //个数

attention

输入的方式(输入到0的时候停止)

if (!x) break;

 while (cin >> x && x)

 while (cin >> x, x)

while (cin >> n, n <= 0);

如果读入的 NN 为 00 或负数,则继续读取数字直至读入 NN 值为正整数为止。

!(-1)==0  !(0)==1;
c++最多每秒运行y一亿次 1e8

读入字符串的时候,不是一行都读进来,遇到空格,回车,文件结束符为止

2.判断闰年。闰年有两种情况:
(1) 能被100整除时,必须能被400整除;
(2) 不能被100整除时,被4整除即可。

0x3f相加不爆int,相乘不爆LL

int四个字节,meset把每个字节都编程某个数字

想保留小数的时候,要用double类型,而且后面还要乘上一个1.0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值