acm中常用的C++语法和特性

输入和输出:

头文件和名称空间(不懂百度或直接复制代码,只是格式而已)

#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)   //对结构体进行排序

暂时先写这么多,有空我再更。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值