阅读完 Array,Vector,数组 一节的思考

最近阅读Essential C++一书,发现这个数组不同的说法有着不同的含义,简单总结了一下来做个笔记。

定义方式:

这里我感觉直接引用书上的内容会比较好,因为书上讲的很通俗易懂。

 

 书上讲的比较详细了,这里可以直接阅读。

安全性:

首先,在这三个数组中,Array 和 Vector的安全性肯定是比数组要好得多,这点毋庸置疑,那我们就在具体看一看Array 和 Vector的安全性。

Array:在C++11中新引入的容器类型,在提高安全性的同时,其可操作程度也大大提升。这里简单介绍几个个人记忆比较深的知识点:比如Array中的at()函数,他不但能以索引的方式访问指定的元素,同时还可以进行越界检查。还有影响比较深的empty()函数,可以比较便捷的查看容器是否为空。

Vector:这个就稍微有点复杂,因为要具体分类来说。

首先,我们先看一下网上对于C++多线程的定义:

在线程下,Vector是安全的,但是在多线程中,它是不安全的,这块要加以区分。因为Vector是一个内存可以动态扩展的小东西,这是个好事也是个坏事。好就好在在定义的时候不用去特意定义它的长度,在后续的操作中也不用去担心它的长度问题,因为它可以自己增加或者压缩数据。但是在多线程中,这也是一个问题。我们可以想一下多线程:要么一个读取一个写入,要么两个一起写入。如果执行一个读一个写,那倒是关系不大,两个也不冲突。但是!如果两个一起写,就会导致程序的崩溃。Vector:你俩一起写我到底存哪个,我不干了!那个有解决方法吗?当然有,加锁就好了。具体方法以后在进行扩展。

内存大小与存储的地点:

其实在刚刚已经提到过这个内存的大小问题,当使用Array进行定义时,我们需要提前定义好这个数组的容量大小,但是使用Vector时就不用考虑这个问题,在初始时即使不设定大小,Vector也会有一定的空间,当空间不够用的时候,Vector就是自动申请新的更大的内存空间,然后将原来的数据原封不动的移过去,然后释放掉旧的内存空间。在存储的地点上,Vector的数据存储在堆上,Array的数据存储在栈上。

以上是读书时的一些思考,后面继续阅读会继续写,后面还有好多(小白瑟瑟发抖)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值