c++stl 学习心得

一、c++和c的区别:

1.函数默认值。

在C++中我们在定义或声明一个函数的时候,有时会在形参中给它赋一个初始值作为不传参数时候的缺省值,例如:int is(int a=100);代表没有传参调用的时候,自动给a赋一个10的初始值,这在c语言里是没有且错误的语法。

2.函数重载

C语言中产生函数符号的规则是根据名称产生,这也就注定了c语言不存在函数重载的概念。而C++生成函数符号则考虑了函数名、参数个数、参数类型。

#include <iostream>
 
using namespace std;
 
bool compare(int a,int b)
{
    return a > b;
}
 
bool  compare(double a,double b)
{
    return a > b;
}
 
int main()
{
    compare(10,20);
    compare(10.5,20.5);
    return 0;
}



全局作用域定义了两个函数,它们由于参数类型不同可以构成重载,此时main函数中调用则可以正确的调用到各自的函数。

总结:C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载。

这是目前我学到的两个主要不同。

二、

任何的c++程序都要有using namespace std这一行,可以减少很多其他地方代码的输入,在cfree上写c++语言不加这行会无法正常运行。

c++的头文件相比较c语言的头文件,一般都是在前面多了个c,比如stdio.h在c++里面就成了cstdio,去掉了后缀的.h,在c++语言里面,#include<iostream>包含了大多数c++程序的运行头文件需要,或者直接使用c++的万能头文件#include<stdc++.h>,所有的c++头文件都包含在内。

c++的输出和输入也和c语言有所不同,输入:cin>>a;就是将输入的值赋给a  输出:cout<<a;就是将a的值输出。

可以用cin来判断是否输入的条件为空:

如果输入的n,m值为空,那么while循环就会终止。

在输出方面,输入一般较大数据是用scanf,输出有小数的时候用printf输出,不然用cout要用<iomanip>头文件,且用cout.setprecistion来修改精确精度。

 三、

1.c++中用true来代表非0,false代表0。

2.与C中的malloc类似,C++中用new来动态开辟内存。new写起来会更加简明一些。

例如:c语言中int* carr=(int*)malloc(100*sizeof(int));

c++中就直接写 int* arr= new int [100];

3.c++中用&来创建引用。可以把引用当成一个不能改变指向对象的指针。

例如

在主函数中,a,b的引用后,就成了不能改变指向对象的指针。

四、c++里面的标准库有<vector> 、 <string> 、<algorithm>等等

1.

<cstring> :strlen() 字符串长度            strcmp() 字符串比较          strcpy() 字符串拷贝            memset() 暴力清空          memcpy() 暴力拷贝

<cstdlib>: qsort() C语言快排               rand() 随机数            malloc() free() C语言动态分配内存 <ctime> :time(0)    从1970年到现在的秒数(配合随机数)        clock() 程序启动到目前位置的毫秒数

<cctype> :isdigit(), isalpha(),判断字符是否为数字、大小写字母

algorithm和之前两个头文件不同,它没有定义什么新的类型,而是定义了很多使用的算法,极大简化了代码量。

2.C++ STL <vector> 数组

vector<int> arr(100); 等同于 int arr2[100]

vector<int>::iterator p1;  int* p2;

与普通的数组类似,vector也可以使用指针来访问遍历每一个元素。STL中的指针被称为“迭代器(iterator)”。

3.sort 快速排序

定义一个数组 arr,长度为n。

sort(arr,arr+n),比较函数参数是两个待比较变量,返回值是比较的bool值 内部排序函数是按小于关系来的,排序结果是升序比较函数参数是两个待比较变量,返回值是比较的bool值 内部排序函数是按小于关系来的,排序结果是升序。

想要改变最终结果的排序是升序还是降序,可以在sort后面增加参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值