c++前置和后置的运算符重载,红黑树的概念以及static关键字

c++前置和后置的运算符重载,红黑树的概念以及static关键字

前置++和后置++的运算符重载

cpp 复制代码
#include <iostream>
using namespace std;
class Interge{
    int a;
    public:
    Interge(int a):a(a){}
    int get() const{
        return this->a;
    }
    Interge& operator++(){
        this->a++;
        return *this;
    }
    Interge operator++(int){
        Interge temp= *this;
        this->a++;
        return temp;
    }
};
int main(){
    Interge i(0);
    int a=0;
    cout<<a++<<endl;
    cout<<i.get()<<endl;
    // i++;
    cout<<i.get()<<endl;
    i++++;
    // ++i;
    cout<<i.get()<<endl;
    return 0;
}

红黑树

红黑树的特性 :(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

红黑树的应用

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(log2n),效率非常之高。例如,Java集合中的TreeSetTreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。

static关键字

总的来说

  • (1)修饰变量,static 修饰的静态局部变量只执行初始化一次,延长了局部变量的生命周期,直到程序运行结束以后才释放。
  • (2)修饰全局变量:全局变量只能在本文件中访问,不能在其它文件中访问, extern 外部声明也不可以。
  • (3)修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。static 修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。初始化的时候自动初始化为 0。
  • (4)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组,如果不想让这个数组在函数调用结束释放可以使用 static 修饰。
  • (5)考虑到数据安全性(当程序想要使用全局变量的时候应该先考虑使用 static)。
相关推荐
小小仙。几秒前
IT自学第十八天
java·开发语言·算法
王老师青少年编程3 分钟前
2025年3月GESP真题及题解(C++七级): 等价消除
c++·编程·题解·真题·gesp·七级·等价消除
Yupureki6 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-贪心算法(上)
c语言·数据结构·c++·算法·贪心算法·visual studio
散峰而望8 分钟前
【算法竞赛】队列和 queue
开发语言·数据结构·c++·算法·链表·github·线性回归
扶苏-su8 分钟前
Java--打印流
java·开发语言
幽络源小助理8 分钟前
SpringBoot+Vue旅游推荐系统源码 | 幽络源
java·开发语言·spring boot
烧饼Fighting11 分钟前
统信UOS操作系统离线安装ffmpeg
开发语言·javascript·ffmpeg
yuanmenghao12 分钟前
车载Linux 系统问题定位方法论与实战系列 - 开篇: 为什么需要一套“系统化”的 Linux 问题定位方法
linux·运维·服务器·数据结构·c++·自动驾驶
浮尘笔记14 分钟前
Go语言上下文:context.Context类型详解
开发语言·后端·golang
一只小bit14 分钟前
Qt 对话框全方面详解,包含示例与解析
前端·c++·qt·cpp·页面