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

C++ vector如何动态申请内存的元素

2024-04-02 19:04:59 598人浏览 薄情痞子
摘要

vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。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数组,大小为200
char *p = new char(200); //new一个char ,其初始值为200

到此这篇关于C++ vector如何动态申请内存的元素的文章就介绍到这了,更多相关C++ vector动态申请内存元素内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

猜你喜欢
  • C++ vector如何动态申请内存的元素
    vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构...
    99+
    2024-04-02
  • C++ vector怎么动态申请内存的元素
    这篇文章主要介绍C++ vector怎么动态申请内存的元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删...
    99+
    2023-06-20
  • c++中vector如何删除指定位置的元素
    要删除vector中指定位置的元素,可以使用erase()方法。该方法接受一个迭代器作为参数,指示要删除的元素位置。 以下是一个示例...
    99+
    2024-03-02
    c++
  • C语言的动态内存如何分配
    今天小编给大家分享一下C语言的动态内存如何分配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。动态内存分配的定义首先我们要搞清...
    99+
    2023-07-02
  • jquery如何动态增加元素
    这篇文章主要介绍“jquery如何动态增加元素”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery如何动态增加元素”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • JS如何动态创建元素
    这篇文章主要介绍了JS如何动态创建元素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS如何动态创建元素文章都会有所收获,下面我们一起来看看吧。一、字符串拼接形式    为了更好的...
    99+
    2023-07-04
  • Android动态权限申请如何实现
    本篇内容介绍了“Android动态权限申请如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Google 在 Android 6.0 开...
    99+
    2023-07-05
  • 如何在c++中分配动态内存
    今天就跟大家聊聊有关如何在c++中分配动态内存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。动态申请内存操作符 newnew 类型名T(初始化参数列表)功能:在程...
    99+
    2023-06-06
  • 如何动态删除ArrayList中的元素
    这篇文章给大家介绍如何动态删除ArrayList中的元素,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。昨天一位项目组同事需要在ArrayList中删除所有不等于指定值的元素,但是她弄了很久,发现总是删得不完全。刚好我以...
    99+
    2023-06-17
  • C语言如何实现动态内存的分配
    这篇文章给大家分享的是有关C语言如何实现动态内存的分配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C 程序中,不同数据在内存中分配说明1)全局变量&mdash;&mdash;内存中的静态存储区2...
    99+
    2023-06-22
  • 如何正确释放Vector的内存
    这篇文章主要讲解了“如何正确释放Vector的内存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何正确释放Vector的内存”吧!今天在看微博的时候, 有人提出了一个对于Vector内存泄...
    99+
    2023-06-17
  • jQuery如何实现动态创建元素?
    ...
    99+
    2024-04-02
  • 如何动态生成HTML元素并为元素追加属性
    这篇文章给大家分享的是有关如何动态生成HTML元素并为元素追加属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。动态生成HTML元素的方法由三种:第一种:document.cre...
    99+
    2024-04-02
  • C语言如何实现动态内存分配
    今天小编给大家分享一下C语言如何实现动态内存分配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C语言动态内存分配的详解1.为...
    99+
    2023-06-16
  • C++实现求动态矩阵各元素的和
    本文实例为大家分享了C++实现动态矩阵各元素的求和,供大家参考,具体内容如下 一、n阶方阵求和 功能:输入方阵维度,点击<Enter>,然后根据提示输入矩阵各阶元素,点击...
    99+
    2024-04-02
  • 元素之舞:HTML 内联样式的动态变幻
    在 HTML 中,内联样式可轻松地为单个元素添加自定义外观。然而,如果需要动态调整样式以响应用户交互或数据变化,则需要更高级的技术。本文将探讨在 HTML 中动态修改内联样式的多种方法,从简单的 JavaScript 到更复杂的 CSS ...
    99+
    2024-03-11
    引言
  • C语言的动态内存分配及动态内存分配函数详解
    目录mallocmalloc的使用:freecalloccalloc的使用:reallocrealloc的使用改进:realloc的另一种用法:常见的动态内存错误对空指针的解引用操作...
    99+
    2024-04-02
  • vue类名如何获取动态生成的元素
    目录类名获取动态生成的元素如何获取并操作dom元素类名获取动态生成的元素 首先注意的是,该元素必须在id为app这个元素里面  new Vue({    el: "#app",   ...
    99+
    2024-04-02
  • Android如何实现列表元素动态效果
    这篇文章主要介绍了Android如何实现列表元素动态效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何实现列表元素动态效果文章都会有所收获,下面我们一起来看看吧。前言列表是移动应用中用得最多的...
    99+
    2023-06-29
  • C语言动态内存分配函数如何使用
    这篇文章主要介绍“C语言动态内存分配函数如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言动态内存分配函数如何使用”文章能帮助大家解决问题。局部变量和函数的形参向栈区申请空间全局变量和st...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作