C++的高级特性

本文介绍以下内容:如何创建动态数组,如何使用向量,如何使用迭代器,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.作用于虚方法:阻止派生类覆盖此虚方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值