【Linux】环境变量 1、基本概念echo $NAME //NAME:你的环境变量名称echo: 显示某个环境变量值export: 设置一个新的环境变量env: 显示所有环境变量unset: 清除环境变量set: 显示本地定义的shell变量和环境变量。
【C++】学习C++必须掌握的【五种特殊类设计】 学习C++必须掌握的五种特殊类设计:请设计一个类,不能被拷贝、请设计一个类,只能在堆上创建对象、请设计一个类,只能在栈上创建对象、请设计一个类,不能被继承、请设计一个类,只能创建一个对象(单例模式)
【C++】一篇文章带你熟练掌握<智能指针>及其模拟实现 在 new 和 delete 之间如果 div() 抛异常了,那么开辟的空间 p 就无法释放。最终会造成内存泄露。我们之前面对这样的问题,是对 div() 函数套一层异常判断,如果出现异常,先释放资源,再将异常抛出给外面的捕获处理【异常处理】。因此发明了智能指针,本文详细讲解了智能指针的使用及原理、RAII、auto_ptr、unique_ptr、shared_ptr、weak_ptr.
【C++】C++异常处理,你绝对不能错过的干货!!! 异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的 直接或间接的调用者处理这个错误。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常.catch 关键字用于捕获异常,可以有多个catch进行捕获。try: try 块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个 catch 块。如果有一个块抛出一个异常,捕获异常的方法会使用try和catch关键字
【C++】深入剖析C++中的lambda表达式&&包装器&&bind 随着C++语法的发展,人们开始觉得上面的写法太复杂了,每次为了实现一个algorithm算法, 都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名, 这些都给编程者带来了极大的不便。当我们使用包装器时,将可调用对象:函数指针,函数对象,lambda函数,都可以封装在包装器里。想要将可调用对象存储到容器里,首先我们得需要知道它的类型,函数指针的类型实在是太麻烦了,而仿函数类型我们是可以知道,但lambda的类型我们是不知道的,所以难道容器里只能存储仿函数吗?
【C++】深入剖析C++11中右值引用和左值引用 我们注意到 to_string 函数的地址是无法获取到的,也就是说 to_string 函数的返回值是右值,而 to_string 函数的返回值又是自定义类型,所以这个右值是个将亡值,生命周期就在这一行,我们可以利用这个将要销毁的将亡值的特性,将这个将亡值的资源全部吸走,再将自己的不要的给它,这样不需要开辟空间,也不需要深度拷贝,ret 这个变量就获取到了想要的资源时,这里的前提就是变量要么是静态变量要么是全局变量,反正在函数结束后,该引用变量仍然存在,这个场景下才可以使用左值引用,减少拷贝。
【C++】深入剖析C++11 initializer_list &&新的类功能 &&可变模板参数 深入剖析C++11中的可变模板参数&&initializer_list&&新的类功能。包含默认成员函数的增加、关键字default、关键字delete
【C++】哈希的应用---位图 🟢位图解决 数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一 个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0 代表不存在。遍历和排序查找的工程量太大了,这肯定是不行的,因为,光是把数据存起来就要用掉16GB的内存,而且要求空间连续内存开不出这么大的连续空间。我们都知道计算机的数据和指令都是二进制的,二进制是由0,1两个数字组成,这就意味着这两个数字可以表示两个不同的状态,位图的基础也是基于这一点。一次都没有出现的,出现一次,出现两次及以上。
【C++】哈希的应用---布隆过滤器 我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉 那些已经看过的内容。问题来了,新闻客户端推荐系统如何实现推送去重的?用服务器记录了用 户看过的所有历史记录,当推荐系统推荐新闻时会从每个用户的历史记录里进行筛选,过滤掉那些已经存在的记录。如何快速查找呢?🟢用哈希表存储用户记录,缺点:浪费空间🟢用位图存储用户记录,缺点:位图一般只能处理,如果内容编号是字符串,就无法处理了。🟢将哈希与位图结合,即布隆过滤器。
【C++】红黑树模拟实现STL中的map与set map 和 set 的底层都是红黑树,虽然不是同一棵树,但都是由同一个模板实例化而成。因此我们希望改造红黑树,让他适配不同类型的数据。关联式容器中存储的是的键值对,k为key的类型,ValueType: 如果是map,则为pair;如果是set,则为k我们可以定义一个,通过传模板参数来决定树里存的是什么数据类型。
【C++】AVL 树 前面对map/multimap/set/multiset进行了简单的介绍,在其文档介绍中发现,这几个容器有个 共同点是:其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此 map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。我们今天来学习AVL树。
【C++】二叉搜索数 搜索二叉树是对数据结构二叉树的进阶,本文将从概念、模拟实现(构造、析构、拷贝、赋值、插入、打印、搜索、删除)等多个方面对二叉树进行讲解。二叉树在K模型&&KV模型中的应用。快来学习吧!!!!
【C++】多态 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。🌟那么在继承中要构成多态还有两个条件:⭕必须通过基类的指针或者引用调用虚函数⭕被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。