返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ vector怎么动态申请内存的元素
  • 255
分享到

C++ vector怎么动态申请内存的元素

2023-06-20 17:06:14 255人浏览 泡泡鱼
摘要

这篇文章主要介绍c++ vector怎么动态申请内存的元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删

这篇文章主要介绍c++ vector怎么动态申请内存的元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分配的内存空间是以2的倍数动态增长的。在push_back的过程中,若发现分配的内存空间不足,则重新分配一段连续的内存空间,其大小是现在连续空间的2倍,再将原先空间中的元素复制到新的空间中,性能消耗比较大。

vector 基本用法:

  • front()返回头部元素的引用,可以当左值

  • back()返回尾部元素的引用,可以当左值

  • push_back()添加元素,只能尾部添加

  • pop_back()移除元素,只能在尾部移除

  • erase(iterator) 是根据位置进行删除,如果想要删除某个元素,需要找到当前元素的迭代器位置,再进行删除

  • insert() 结合迭代器位置插入指定的元素

我们使用vector时候,有时候会插入一些动态内存数据(例如new出来的指针插入到vector中)。这时候我们一定要注意C++的内存管理,因为C++的内存管理原则,谁申请的,谁销毁。我们如果不对vector里的指针对应的动态内存进行销毁操作,直接clear()的话就会造成内存泄露。所以我们需要首先遍历vector,把vector中元素存储的指针对应动态内存销毁掉,然后再clear()掉vector。

demo示例:

#include <vector>#include <iOStream>#include <cstring>using namespace std; int main(){    vector<char *> obj;        //vector中插入动态内存    for(int i=0;i<10;i++)    {        char * ptr = new char[100];        memset(ptr, 0 , 100);                obj.push_back(ptr);    }    //需要清理申请的动态内存,然后才能清空vector,否则会造成内存泄露    for(vector<char *>::iterator it = obj.begin(); it != obj.end(); it++)    {        if(*it != NULL)        {            delete *it;            *it = NULL;        }    }    obj.clear();     return 0;}

番外篇:new char[100]和new char(100)的区别

写demo的时候,顺手写了new char(100)。。。后面发现不对了。。。哎。。。所以加了个番外篇,记录一下。
new char[100]和new char(100)的区别,其实这个属于分配问题,大家使用时还是要注意的,失之毫厘差以千里啊!

详情如下:

char *p = new char[200]; // new一个char数组,大小为200char *p = new char(200); //new一个char ,其初始值为200

以上是“C++ vector怎么动态申请内存的元素”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网其他教程频道!

--结束END--

本文标题: C++ vector怎么动态申请内存的元素

本文链接: https://lsjlt.com/news/298777.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++ vector怎么动态申请内存的元素
    这篇文章主要介绍C++ vector怎么动态申请内存的元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删...
    99+
    2023-06-20
  • C++ vector如何动态申请内存的元素
    vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构...
    99+
    2024-04-02
  • c++怎么输出vector中的元素
    要输出vector中的元素,可以通过遍历vector并输出每个元素。以下是一个示例代码: #include <iostream...
    99+
    2024-03-02
    c++
  • c++中vector怎么清空所有元素
    要清空一个vector中的所有元素,可以使用vector的clear()方法。该方法会删除所有元素,使得vector变为空。示例如下...
    99+
    2024-03-13
    c++
  • c++怎么从vector中删除某一元素
    要从vector中删除某一元素,可以使用erase()函数结合迭代器来实现。以下是一个示例: #include <iostre...
    99+
    2024-03-02
    c++
  • Linux内存申请是怎样的
    本篇内容主要讲解“Linux内存申请是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux内存申请是怎样的”吧!先上基础,下图是Linux的内存映射模型每一个进程都有自己的进程空间,进...
    99+
    2023-06-16
  • c++中vector怎么删除指定位置元素
    要删除vector中指定位置的元素,可以使用erase()方法。下面是一个示例代码: #include <iostream&g...
    99+
    2024-03-13
    c++
  • Android 6.0中怎么申请动态权限
    Android 6.0中怎么申请动态权限?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如果设备运行的是 Android 6.0(API 级别 23)或更高版本,并且应用的 ta...
    99+
    2023-05-31
    android android6.0 roi
  • 怎么在C++中动态内存分配
    今天就跟大家聊聊有关怎么在C++中动态内存分配,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。按需分配,根据需要分配内存,不浪费。内存拷贝函数void* memcpy(void* de...
    99+
    2023-06-14
  • Linux内核环境下怎么申请大块内存
    这篇文章主要为大家展示了“Linux内核环境下怎么申请大块内存”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux内核环境下怎么申请大块内存”这篇文章吧。在Linux内核环境下,申请大块内存...
    99+
    2023-06-12
  • C++实现求动态矩阵各元素的和
    本文实例为大家分享了C++实现动态矩阵各元素的求和,供大家参考,具体内容如下 一、n阶方阵求和 功能:输入方阵维度,点击<Enter>,然后根据提示输入矩阵各阶元素,点击...
    99+
    2024-04-02
  • c#数组动态添加元素的方法是什么
    在C#中,数组的大小是固定的,无法动态添加元素。如果需要动态添加元素,可以使用List类。List类是一个泛型集合类,可以根据需要动...
    99+
    2023-09-26
    c#
  • 使用jquery怎么动态创建元素
    本篇文章为大家展示了使用jquery怎么动态创建元素,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链式语法和短小清...
    99+
    2023-06-14
  • 元素之舞:HTML 内联样式的动态变幻
    在 HTML 中,内联样式可轻松地为单个元素添加自定义外观。然而,如果需要动态调整样式以响应用户交互或数据变化,则需要更高级的技术。本文将探讨在 HTML 中动态修改内联样式的多种方法,从简单的 JavaScript 到更复杂的 CSS ...
    99+
    2024-03-11
    引言
  • C语言动态内存分配怎么使用
    这篇文章主要介绍了C语言动态内存分配怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言动态内存分配怎么使用文章都会有所收获,下面我们一起来看看吧。一、动态内存分配的意义C语言中的一切操作都是基于内存的...
    99+
    2023-06-30
  • C语言的动态内存分配及动态内存分配函数详解
    目录mallocmalloc的使用:freecalloccalloc的使用:reallocrealloc的使用改进:realloc的另一种用法:常见的动态内存错误对空指针的解引用操作...
    99+
    2024-04-02
  • 国内免费的vps怎么申请
    国内免费的VPS申请一般有三种方式:1、参加社区活动一些VPS运营商会在社区活动中通过抽奖、竞标等形式来提供免费VPS服务。2、注册...
    99+
    2023-03-07
    国内免费的vps 国内vps vps
  • uniapp怎么动态控制元素的显示隐藏
    在Uniapp中,我们经常需要根据用户的操作或者其他条件来显示或隐藏一些页面元素。例如,当用户点击一个按钮时,我们需要显示一个弹窗窗口,或者根据用户是否登录来动态地显示登录或者注册按钮。在这种情况下,我们可以使用Uniapp提供的v-sho...
    99+
    2023-05-14
  • C++中为什么要使用动态内存
    为什么要使用动态内存 1.按需分配,根据需要分配内存,不浪费 int main(void) { int money[10] = { 1, 2, 3 ,4, 5, 6, 7, 8, ...
    99+
    2024-04-02
  • 免费动态域名申请的方法是什么
    免费动态域名申请的方法一般包括以下步骤:1.在动态域名服务商网站上注册账号。2.登录账号后,进入域名管理页面,选择“免费动态域名申请...
    99+
    2023-06-14
    免费动态域名 域名
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作