C++中动态数组的使用

C++中动态数组的使用

假设要在应用程序中存储医院的病历,程序员将无法知道需要处理的病历数上限。就小医院而言,为稳妥起见,程序员可对上限做合理的假设。在这种情况下,程序员将预留大量的内存,进而降低系统的性能。

为减少占用的内存,可不使用前面介绍的静态数组,而使用动态数组,并在运行阶段根据需要增大动态数组。 C++提供了 std::vector,这是一种方便而易于使用的动态数组,示例程序如下所示:

cpp 复制代码
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> dynArray (3);

    dynArray[0] = 365;
    dynArray[1] = -421;
    dynArray[2]= 789;

    cout << "Number of integers in array: " << dynArray.size() << endl;

    cout << "Enter another element to insert" << endl;
    int newValue = 0;
    cin >> newValue;
    dynArray.push_back(newValue);

    cout << "Number of integers in array: " << dynArray.size() << endl;
    cout << "Last element in array: ";
    cout << dynArray[dynArray.size() - 1] << endl;

    return 0;
}

输出:

复制代码
Number of integers in array: 3
Enter another element to insert
2017
Number of integers in array: 4
Last element in array: 2017

分析:

由于还未介绍矢量和模板,如果不明白程序中的语法,也不用担心。请尝试将输出与代码关联起来。从输出可知,数组的初始长度为 3,这与第 7 行的数组( std::vector)声明一致。在知道这一点的情况下,第 15 行仍让用户输入第 4 个数字,而第 18 行使用 push_back( ) 将这个数字插入到数组末尾。这个矢量动态地调整其长度,以存储更多数据。输出证明了这一点:矢量的长度变成了 4。访问矢量中的数据时,语法与访问静态数组类似。第 22 行访问最后一个元素,其位置是在运行阶段计算得到的。索引从零开始,而 size( ) 返回矢量包含的元素数,因此最后一个元素的索引为 size( )-1

注意:

复制代码
要使用动态数组类 std::vector,需要包含头文件 vector,如示例程序的第 1 行所示:
#include <vector>

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,

分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,

fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,

TCP/IP,协程,DPDK等技术内容,点击立即学习:

服务器课程:C++服务器

相关推荐
HAPPY酷20 分钟前
C++ 成员指针(Pointer to Member)完全指南
java·c++·算法
Sunsets_Red25 分钟前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛
星火开发设计44 分钟前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
忘梓.1 小时前
二叉搜索树·极速分拣篇」:用C++怒肝《双截棍》分拣算法,暴打节点删除Boss战!
开发语言·c++·算法
闻缺陷则喜何志丹1 小时前
【C++DFS 马拉车】3327. 判断 DFS 字符串是否是回文串|2454
c++·算法·深度优先·字符串·力扣·回文·马拉车
晨非辰1 小时前
【数据结构入坑指南(三.1)】--《面试必看:单链表与顺序表之争,读懂“不连续”之美背后的算法思想》
数据结构·c++·人工智能·深度学习·算法·机器学习·面试
旖旎夜光1 小时前
哈希(14)(下)
数据结构·c++·学习
拾光Ծ1 小时前
哈希表进阶:挑战用哈希桶封装unordered_set和unordered_map,帮你深度理解迭代器!!!
数据结构·c++·哈希算法·散列表
给我一瓶哇哈哈呀1 小时前
[ROS2] CMU团队的Autonomous Exploration算法+MID-360部署到实车记录
c++·自动驾驶
草莓熊Lotso1 小时前
《算法闯关指南:优选算法--滑动窗口》--15.串联所有单词的子串,16.最小覆盖子串
开发语言·c++·人工智能·算法