C++的高级特性

扫码查看
转自:https://blog.csdn.net/qq_35488967/article/details/57089494 

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

  1. 动态数组
  1. int n;
  2. n=10;//此处可以把用户从界面上输入的值赋值给n。
  3. int *p=int a[n];
  4. //给数组赋值
  5. for(int i=0;i<n;i++)
  6. {
  7.     a[i]=i;
  8. }
  9. //打印数组
  10. for(int i=0;i<n;i++)
  11. {
  12.     std::cout<<a[i]<<endl;
  13. }
以上代码可以完美运行。由此可见,可以借着指针实现数组的动态创建。 
然而这种动态创建还称不上真正意义上的动态。因为我们总归还是要输入一个值来告诉系统应该分配多少的内存,我们想要的效果是,不必告诉系统要给这个结构体分配多少内存,当存入或删除某个数值后,系统能够自动地对内存增加或减少。要实现这样的效果,就要用到了下面的“向量”的概念。


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

  1. //标准库里的每一个容器都支持迭代器
  2. //向量的函数原型是std::vector<type> vectorName;
  3. //定义
  4. #include<iostream>
  5. #include<string>
  6. #include<vector>
  7. #include<algorithm>//用于排序

  8. std::vector<std::string> vHobbies;
  9. //赋值
  10. vHobbies.push_back("烫头");
  11. vHobbies.push_back("抽烟");
  12. vHobbies.push_back("喝酒");

  13. //比较low的输出方式
  14. for(int i =0;i<vHobbies.size();i++)
  15. {
  16. //此时输出排序前的向量:烫头,抽烟,喝酒
  17.     std::cout<<vHobbies[i]<<endl;
  18. }

  19. auto iter=vHobbies.begin();//auto用法是C++最新标准中的自动类型
  20. std::sort(vHobbies.begin(),vHobbies.end());//将向量中的各项按字母表的顺序排列
  21. //比较diao的输出方式
  22. while(iter!=vHobbies.end();iter++)
  23. {
  24. //此时输出排序后的向量:抽烟,喝酒,烫头
  25.     std::cout<<*iter<<endl;
  26. }
3、define定义函数

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

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

  1. 根据要返回的多个值创建一个结构体,返回这个结构体。不赘述。
  2. 利用引用作为函数参数。看下面的代码示例
  1. int function(int &a,int &b,int &c)
  2. {
  3.     b=a+8;
  4.     c+a+12;
  5. }

  6. int main()
  7. {
  8.     int x,y,z;
  9.     x=1;y=0;z=0;
  10.     function(x,y,z);
  11.     //此时可以把x看作是输入的值,y和z看作是函数的返回值。
  12.     cout<<y<<" "<<z<<endl;
  13.     //此时输出的y的值是9,z的值是13。
  14. }

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

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

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

————————————————
版权声明:本文为CSDN博主「leyou2018」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35488967/article/details/57089494

09-05 01:24
查看更多