
C++
文章平均质量分 85
兜兜里有好多糖
这个作者很懒,什么都没留下…
展开
-
【C++】序列与关联容器(三)map与multimap容器
如果[]中输入的key值在已定义的map中并不存在,系统并不会返回不存在这样的信息,而是会新建一个该key值对应的节点,并把value隐式的初始化为0。由于我们并未定义一个key为100的结点,故系统在m中找不到该节点,之后就自行定义了该节点,并把节点的value值初始化为0。因为常量对象不可修改,不可写,但是[]运算符在查找不到该节点的时候就会新增一个节点,相当于企图修改该常量对象,那就是错误的。但是其他的访问方式,如:at,find都会输出报错,访问越界。答案是使用find或者at。原创 2024-08-17 14:17:29 · 646 阅读 · 0 评论 -
【C++】序列与关联容器(二)序列容器
关于上面程序代码最后一行提到的data命令:array,vector这些都有,基本上如果是连续保存的数据类型就会有,而分散保存的,比如list就不会有。上述容器都是模板,都需要使用元素类型来实例化容器模板,从而构造可以保存具体类型的容器。不同的容器所提供的接口大致相同,但根据容器性质的差异,其内部实现与复杂度不同。对于复杂度过高的操作,提供相对较难使用的接口或者不提供相应的接口。每种容器的实现方法的难易不同,特性不同,适用的应用场景不同。原创 2024-08-15 16:58:57 · 391 阅读 · 0 评论 -
【C++】序列与关联容器(一)概述
容器:一种特殊的类型,其对象可以放置其它类型的对象(元素)需要支持的操作:对象的添加、删除、索引、遍历有多种算法可以实现容器,每种方法各有利弊。原创 2024-08-15 10:21:20 · 368 阅读 · 0 评论 -
【C++】动态内存(二)智能指针
由于new和delete会造成一定程度的内存泄漏问题,以及内存所有权不清晰,因此引入自动销毁相应内存空间的智能指针。智能指针是抽象数据类型,本身具有析构函数,因此调用之后会自动调用析构函数,在析构函数中会自动调用delete来释放相应内存空间,因此不用手动显式的调用delete。原创 2024-08-12 20:29:56 · 1159 阅读 · 0 评论 -
【C++】动态内存(一)堆内存中的new与delete的使用
内存分为和栈内存的特点:更好的局部性,对象自动销毁堆内存的特点:运行期动态扩展,需要显式释放系统在分配内存时,如上图,栈内存通常是从下往上生长(分配)的;而堆内存通常是从上往下(也就是地址由小到大)分配的。栈内存通常是自动分配的,如:定义一个函数,以及定义一个数据。和。这样的对象操作其实可以看做与类中的对象操作类似,都需要定义之后手动销毁。(类中有构造函数以及析构函数,也是构造之后进行销毁)与;对象的销毁与之类似。原创 2024-08-08 15:14:31 · 747 阅读 · 0 评论