zoukankan      html  css  js  c++  java
  • std::array vector 数组联系和区别

        共同点

    (1.)都和数组相似,都可以使用标准数组的表示方法来访问每个元素(array和vector都对下标运算符[ ]进行了重载)
    (2.)三者的存储都是连续的,可以进行随机访问

        不同点

    (0.)数组是不安全的,array和vector是比较安全的(有效的避免越界等问题)
    (1.)array对象和数组存储在相同的内存区域(栈)中,vector对象存储在自由存储区(堆)
    (2.)array可以将一个对象赋值给另一个array对象,但是数组不行
    (3.)vector属于变长的容器,即可以根据数据的插入和删除重新构造容器容量;但是array和数组属于定长容器
    (4.)vector和array提供了更好的数据访问机制,即可以使用front()和back()以及at()(at()可以避免a[-1]访问越界的问题)访问方式,使得访问更加安全。而数组只能通过下标访问,在写程序中很容易出现越界的错误
    (5.)vector和array提供了更好的遍历机制,即有正向迭代器和反向迭代器
    (6.)vector和array提供了size()和Empty(),而数组只能通过sizeof()/strlen()以及遍历计数来获取大小和是否为空
    (7.)vector和array提供了两个容器对象的内容交换,即swap()的机制,而数组对于交换只能通过遍历的方式逐个交换元素
    (8.)array提供了初始化所有成员的方法fill()
    (9.)由于vector的动态内存变化的机制,在插入和删除时,需要考虑迭代的是否有效问题
    (10.)vector和array在声明变量后,在声明周期完成后,会自动地释放其所占用的内存。对于数组如果用new[ ]/malloc申请的空间,必须用对应的delete[ ]和free来释放内存

  • 相关阅读:
    Android配置----adb工具的使用
    Android配置----小米手机通过wifi连接ADB调试Android应用
    Java语法基础(二)----运算符
    Java语法基础(一)----关键字、标识符、常量、变量
    Java学习----Java概述
    nginx配置upstream实现负载均衡
    docker挂载本地目录和数据卷容器
    sublime text 3 配置优化
    sql update set使用case when语句
    mysql表复制create table like和create table as比较
  • 原文地址:https://www.cnblogs.com/mataiyuan/p/12987924.html
Copyright © 2011-2022 走看看