C++笔记1

Sort函数:

        sort函数是一个高效的排序函数,其排序效率不逊色于快速排序算法,它很好地体现了C++的强大,我在这对sort函数进行笔记总结,供大家参考。

        使用——

                一般情况:

    sort(首地址,尾地址,排序方法(可有可无))

        sort函数有三个参数,第一个参数是需要排序部分的首地址,第二个参数是尾地址,具体是指所需排序数据的最后一位的地址还要+1,第三个参数是排序方法,比如是从小到大排序还是从大到小排序。举个例子,有数组:

int arr[10] = {1, 2, 231, 213, 23, 55, 3, 456, 32, 100}

        如果想要对全部数据进行从小到大排序,首地址就是 arr, 尾地址就是 arr+10(位于100之后), 第三个参数可以没有,此时实现的就是从小到大排序。

        如果想要对【3】到【8】数据进行从小到大排序呢?那么首地址就是 arr+3, 尾地址就是 arr+9而不是 arr+8,因为尾地址还要往后移一个存储单元。

        一般第三个参数有三种情况:

        1.没有第三个参数:此时进行从小到大排序,排序数据默认为 int。

int arr[5] = {1, 2, 234, 54, 58};
sort(arr,arr+5);

        2.参数为:less<数据类型>():此时进行从小到大排序, 排序数据类型可以由自己选择

double arr[5] = {1.2, 2.2, 234.32, 54.2, 58.234};
sort(arr,arr+5,less<double>());

        3.参数为:greater<数据类型>():此时进行从大到小排序,排序数据类型也是自己选择

double arr[5] = {1.2, 2.2, 234.32, 54.2, 58.234};
sort(arr,arr+5,greater<double>());

        排序字符:

        这时候数据类型就是 char, 可以对一个字符串进行排序。 它的规则是按照字符的阿斯克码大小排序,less就是从阿斯克码小的排到大的, greater就是从阿斯克码大的排到小的。

        头文件:

        可以是 #include<algorithm>,也可以是万能头文件 #include<bits/stdc++.h>

引用:

引用是变量的别名,它能简化指针,同时能够发挥指针的作用。

        通过&符号,可以创建一个引用。引用本质是一个指针常量,即int *const ref = int &ref。它使得这个指针只能指向一个地方,也就是只能指向一个变量,而不能改变。

        代码 + 注释 + 例子或许可以帮你更好地理解。

#include<bits/stdc++.h>
using namespace std;
void func(int &ref);
void print(const int &reff);
int main(void)
{
    int a = 10;
    int &ref = a;
    //* 引用必须初始化,初始化之后不能再改变
    ref = 20;
    //* 引用就是一个变量的别名,通过引用,可以直接改变变量的内容
    cout << "a:" << a << endl;
    cout << "ref:" << ref << endl;
    func(a);
    print(a);
    //! 引用作为函数参数时,传入函数的是变量的引用,而不是值。
    //* 引用的本质是指针常量,即int *const ref = int &ref = a,引用的指向不可变
    cout << "a:" << a << endl;
    cout << "ref:" << ref << endl;
    system("pause");
    return 0;
}
void func(int &ref)
{
    ref = 100;  //TODO  函数得到函数外变量的引用,则可以像变量一样改变内容
}
void print(const int &reff)
//TODO  当给函数引用参数前加一个const,那么在函数内就不能再修改引用的值了
{
    cout << reff << endl;
}

        引用有个注意事项。在此之前,我们先来谈谈计算机运行时内存分配的四个区。全局区,堆区,栈区,代码区。

        全局区:存放全局变量,静态变量,const修饰的变量,还有常量。

        堆区:由程序员控制,可以由程序员管理其内存,常见的是C语言用malloc动态分配内存。

        栈区:由程序控制,在程序运行前分配内存,结束后释放。

        代码区:存放代码。

因此,对于引用,必须使引用指向合法的内存空间,合法的内存空间是堆栈区,也就是说引用只能指向堆栈区的变量,而不能指向常量和const修饰的变量,静态变量,全局变量。

        举个例子:

const int b = 10;
int &a = b;    //这是不合法的,因为b存放在全局区,而引用只能指向堆栈

喜欢的话点赞关注哦~祝你学习快乐

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值