输入和输出:
头文件和名称空间(不懂百度或直接复制代码,只是格式而已)
#include <iostream>
using namespace std;
输入输出语法:
int a; //或是long long a; double a; char a[10]; 等等,总之不需要像c语言一样要占位符
cin >> a; //输入
cout << a; //输出
cout << "abcdefg"; //输出字符串
cout << endl; //换行
cout << "abcdefg" << endl; //合并cout,效果和上面两个语句一样
int b;
cin >> a >> b; //合并cin,效果和 cin >> a; cin >> b; 一样
cout << "abcdefg\n"; //效果和上一个语句一样
cout << 'a'; //输出字母a,而不是ASCII码,这个和c语言有点不一样
在这里我们可以看到,用c++输入输出能够极大方面减少错误率,而且支持的对象也非常多,c语言的输入输出实在是有点麻烦。不过c语言的输入输出优点也是有的:格式化输出printf();
更方便,而且效率更高(比c++的输入输出要快)。所以,一般情况可以直接用c++的输入输出,而对于数据输入量大的题目最好改成c语言的输入输出。另外,如果想在c++中用c的头文件,只需要把#include <xxx.h>
改成#include <cxxx>
。举个例子,c语言中的输入输出头文件是#include <stdio.h>
,那么在c++中就是#include <cstdio>
。
string:
string类:这个就是升级版的char s[]
。顾名思义,就是字符串,但是这个字符串比char s[]
方便很多。我们先来看看string的头文件和名称空间:
#include <string>
using namespace std;
是不是又看到了using namespace std;
,这个几乎是每个头文件的通用名称空间,其他的c++头文件默认也是这个名称空间,而且还可以这样写:
#include <iostream>
#include <string>
using namespace std;
以后写完一堆头文件后直接在末尾加一句using namespace std;
就行了。
string的用法:
string s;
cin >> s; //输入
cout << s; //输出
string s2;
s2 = s; //把s里面的内容复制到s2里面
string s3;
s3 = s + s2; //拼接s和s2然后复制到s3里面
s = s + s2; //把s2拼接到s末尾
int len = s.length(); //计算s的长度, 然后赋值到len,功能和strlen()一样,都不算'\0'
if(s[0] != 'a') s[0] = 'a'; //可以直接像char s[]一样访问和修改
int cnt = 0;
if(s == s2) cnt++; //可以直接比较s和s2是否相等
排序
c语言里面有个qsort函数,这个就是著名的快排函数,但是由于各种原因(用qsort麻烦,用qsort对于一些情况效率会变低),在c++里面sort更受欢迎,sort是内置在c++ stl里面的,对应的头文件是:
#include <algorithm>
algorithm就是算法的意思,里面还有其他各种函数(max,min函数也是内置在这里面的),下面我们看看这个sort的用法:
int a[5] = {5, 4, 3, 1, 6};
sort(a, a+5); //默认从小到大排序
string s[4] = {"bca", "bac", "abc", "a"};
sort(s, s+4); //默认按从字典序小到大排序
bool cmp(int x, int y){
return x > y;
}
sort(a, a+5, cmp); //按自定义的比较级(cmp函数,上面那个函数要写到主函数外啊)进行排序
struct node{
int u, v;
};
node c[3] = {(1,3),(2,2),(3,1)};
bool cmp(node x, node y){
return x.v < y.v;
}
sort(c, c+3, cmp) //对结构体进行排序
暂时先写这么多,有空我再更。