从C到C++ C++框架

1.1    从C到C++

1.2    C++框架

C++"a+b"程序

1 #include<cstdio>
2 int main()
3 {
4     int a,b;
5     while(scanf("%d%d",&a,&b) == 2 ) printf("%d\n",a+b);
6     return 0;
7 }

唯一的区别是stdio.h变成了cstdio,事实上,stdio.h仍然存在,但是C++中推荐的头文件是cstdio。

类推    string.h变成了cstring    math.h变成了cmath    ctype.h变成了cctype

下面是一个展示更多常用C++特性的程序 

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn =100+10;
int A[maxn];
int main()
{
    long long a,b;
    while(cin >> a >>b)
    {
        cout << min(a,b) <<"\n";
    }
    return 0;
}

这次使用了两个C++特有的头文件,iostream提供了输入输出流,algorithm提供了一些常用算法。

cin>>a的含义是从标注输入中读取a,返回值是一个“已经读取了a的新流”,然后从这个新流中继续读取b。如果流已经读完,while循环将退出。C++流的优势在于不用记忆%s。%d等占位符,同时避开了“long long类型的输入输出的占位符不统一”问题。缺点是运行太慢。

PS:流也可以加速,方法是关闭和stdio同步,即调用ios::sync_with_stdio(false)    ?

using namespace std   C++中有一个“名称空间”(namespace)的概念,用来缓解复杂程序的组织问题。例如张三写了一个函数叫 my_good_function ,李四也写这样一个函数,但作用和张三不同。如果有一天需要把他们的程序合在一起用,就会出问题:函数不能重名 (后面会讲到C++支持函数重载,但如果两个函数的参数类型也完全相同,则是不能重载的)。一个解决方案是分别把函数写在各自的 namespace 里,这样就可以用 zhang3:my_good_function() 和 li4:my_good_function() 这样的方式进行调用。

基于这样的考虑,头文件 iostream 和 algorithm 定义的内容放在 std namespace 里。如果代码和该名称 namespace 里的内容不重名,就可以用 using namespace std 的方法把 std 里的名字导入默认空间 (在工程上不推荐这样做) 。这样就可以用 cin 代替 std::cin, cout 代替 std::cout, min 代替 std::min 了。读者可自行测试。

const 声名数组时,数组大小可以使用 const 声明的常数(这在C99中是不孕的)。在C++中更推荐使用这种写法,而不是用 #define 声明常数。

By the wat, C++中的数据类型和C语言很接近,最显著的区别是多了一个 bool 来表示布尔值,然后用 true 和 false 分别表示真和假。虽然仍然可以使用 int 来表示真假,但是用 bool 可以让程序更清晰。

 

posted @ 2017-03-20 21:45  zhuxuan  阅读(152)  评论(0编辑  收藏  举报