C++的高级特性

来源:互联网 发布:无尽的传说2 mac 破解 编辑:程序博客网 时间:2024/06/08 19:18

本文介绍以下内容:如何创建动态数组,如何使用向量,如何使用迭代器,define如何定义函数,函数如何返回复杂类型,STL中的快速排序。final关键字。

  1. 动态数组
int n;n=10;//此处可以把用户从界面上输入的值赋值给n。int *p=int a[n];//给数组赋值for(int i=0;i<n;i++){    a[i]=i;}//打印数组for(int i=0;i<n;i++){    std::cout<<a[i]<<endl;}

以上代码可以完美运行。由此可见,可以借着指针实现数组的动态创建。
然而这种动态创建还称不上真正意义上的动态。因为我们总归还是要输入一个值来告诉系统应该分配多少的内存,我们想要的效果是,不必告诉系统要给这个结构体分配多少内存,当存入或删除某个数值后,系统能够自动地对内存增加或减少。要实现这样的效果,就要用到了下面的“向量”的概念。

2.向量(vector)与迭代器(iterator)
向量可以看作数组与链表的结合,能够实现真正的动态分配内存。而它与迭代器配合使用更是将其易用性提升到了极致。

//标准库里的每一个容器都支持迭代器//向量的函数原型是std::vector<type> vectorName;//定义#include<iostream>#include<string>#include<vector>#include<algorithm>//用于排序std::vector<std::string> vHobbies;//赋值vHobbies.push_back("烫头");vHobbies.push_back("抽烟");vHobbies.push_back("喝酒");//比较low的输出方式for(int i =0;i<vHobbies.size();i++){//此时输出排序前的向量:烫头,抽烟,喝酒    std::cout<<vHobbies[i]<<endl;}auto iter=vHobbies.begin();//auto用法是C++最新标准中的自动类型std::sort(vHobbies.begin(),vHobbies.end());//将向量中的各项按字母表的顺序排列//比较diao的输出方式while(iter!=vHobbies.end();iter++){//此时输出排序后的向量:抽烟,喝酒,烫头    std::cout<<*iter<<endl;}

3、define定义函数

#define PTR_NULL(p)             { assert(p); if (0 == p) { return; } }#define PTR_BOOL(p)             { assert(p); if (0 == p) { return false; } }

4、函数如何返回多个值。

  1. 根据要返回的多个值创建一个结构体,返回这个结构体。不赘述。
  2. 利用引用作为函数参数。看下面的代码示例
int function(int &a,int &b,int &c){    b=a+8;    c+a+12;}int main(){    int x,y,z;    x=1;y=0;z=0;    function(x,y,z);    //此时可以把x看作是输入的值,y和z看作是函数的返回值。    cout<<y<<"  "<<z<<endl;    //此时输出的y的值是9,z的值是13。}

5、final关键字
C++中final关键字是C++11新增的,作用为:

a.作用于类:阻止一个类成为基类,即不允许扩展该类。

b.作用于虚方法:阻止派生类覆盖此虚方法。

1 0
原创粉丝点击