/PAT-Practice

PAT甲级刷题代码和解析

Primary LanguageC++

充分利用C++的优势解算法题

最近刷算法题的过程中,时常会上网搜索别人的解法,发现其实很多人根本没有正确使用 C++ 语言,好多地方还用的是 C 语言的写法,不仅繁琐,而且降低了可读性。我根据网上的错误总结了一些经验,并且将会不断更新:

使用 cin 而不是 scanf 输入数据

C++ 的数据输入方式太方便了,一个 cin 就能解决一切,然而有些人用着 C++ 语言却还是用 scanf 的方式进行数据的输入,实在是暴殄天物。不过对于输出,有的时候 printf 可能更加方便一些,比如之前的题目里就有保留一位小数输出,这个时候用 cout 反而不如用 printf。

声明结构体时不需要写 typedef

C++ 声明结构体和 C 语言不同,直接写

struct node
{
	//data
};

即可。在定义结构体变量的时候也只需要直接写 node a; 就行了。而网上好多人在用 C++ 的同时还在用 typdef 给结构体起别名,这是 C 语言中的写法,C++ 中完全不需要。

使用 new 而不是 malloc 来动态分配内存

malloc 是 C 语言中的写法,而且较为复杂。以定义动态数组为例,如果用 malloc 的话,写法是 int *a = (int *)malloc(sizeof(int)*n); ,而如果是用 new 定义的话,只需要写 int *a=new int[n]; 即可。

充分利用 vector 的优势

vector 真乃神器也,我前面也多次说过了,真的太好用了。初始化的时候可以确定大小,也可以不确定,使用 push_back()方法动态添加数据。就算一开始不确定大小,之后还可以使用 resize()方法重新确定 vector 的大小。当不断往里面增加元素时,它会自动分配新的内存空间。使用 insert()方法还可以在中间任何位置插入元素。