cpp输入输出及新特性
#include <iostream> //c++标准输入输出的头文件
#include <stdio.h> //兼容c语言的头文件,并在导入头文件后可以使用相关函数
#include <cstdio> //任何xx.h文件都可以且推荐写出cxx的形式
using namespace std;
/*
c++为了避免变量、函数重名问题引入了命名空间的概念,
而std是所有标识符的集合,
所以为了方便我们直接写这条语句就可以正常使用各种关键字及函数了(前提include了相关头文件)
*/
void Swap(int &a,int &b)
{
int temp=a;
a=b,b=temp;
}
int main()
{
int num,temp;
//cin.sync_with_stdio(false); //看完后文再讲这条语句
cin>>num>>temp;//c++引入了新的输入模式cin,它避免了scanf的类型不安全问题和越界问题,
//更加安全简洁其等价于scanf("%d%d",&num,&temp);
cout<<num<<"you could put any string here"<<temp<<endl;/*输出关键字为cout,endl为回车关键字,
cin和cout都自带类型检查。*/
//等价于printf("%d中间可以随意输入字符%d\n",num,temp);
/*比较cin cout和scanf printf,前者更加方便简洁安全,后者更加灵活精准,
在写程序的时候可以根据需要来选择。*/
/*
来讲一下cin.sync_with_stdio(false);
c++为了兼容新旧两种输入输出流,会同步标准输入输出,在使用cin cout时就额外消耗了很多资源
如果一个程序只使用cin cout,就可以把上述语句写在main函数开头,关闭同步后两者速度不会有很大差别,
基本避免因为cin cout导致的TLE。
副作用就是此时不能再使用scanf printf,亲测在hdu 很大概率会WA 在codeforces会runtime error。
所以在遇到大规模输入输出时,可以考虑关闭同步,如果程序某处想用scanf/printf,
就干脆更换掉所有的cin cout。*/
const int N=5;
int arr[N];//允许用const变量作为长度
for(int i=0;i<N;i++)//for语句中可以直接申明下标变量
arr[i]=i;
num=3,temp=10;
int &ref=num;/*引用,可以理解为对指针的封装,ref是对num的引用,
对ref的任何操作都相当于直接对num操作。*/
ref++;
cout<<num<<endl;
Swap(num,temp);
cout<<num<<' '<<temp<<endl;
struct stu//结构体申明方式,c++中struct与class的区别仅仅在于一个默认public还是private,
{ //暂时不必掌握。
int age;
int height;
stu(int Age,int Height)//构造函数
{
age=Age,height=Height;
}
void print()//自定义函数
{
cout<<age<<endl<<height<<endl;
}
bool operator <(stu from)//重载小于运算符,重载运算符内容可以自行百度慢慢学习,
{ //C++可以重载很多运算符,非常有用。
if(age==from.age)
return height<from.height;
return age<from.age;
}
};
stu Anna(18,165);
Anna.print();
stu Bob=Anna;//可以直接赋值,C++内部实现了copy操作。
Bob.print();
Bob.height++;
cout<<(Anna<Bob?"Anna":"Bob")<<endl;//重载运算符后可以直接进行比较
return 0;
}