当前位置: 首页 > article >正文

C++的动态数组

1、动态数组是内存连续的数组,在分配时不用指定所需的大小

2、当存储的数据超过动态数组的大小时,它会在内存中创建一个比第一个数组还大的新数组,把所有的东西都复制到这里,然后删除旧的那个。这样我们就有了一个新数组,有更多的存储空间,我们可以像这样不断地向它添加东西。

3、实际中,动态数组倾向于经常分配,因此并不能得到最佳性能。

4、当我们固定分配数组大小时,有时可能不够灵活。

因此想要动态数组更加灵活。

#include<iostream>
#include<string>
#include<vector>

struct Vertex
{
    float x,y,z;
};

std::ostream& operator<<(std::ostream& stream,const Vertex& vertex) //输出运算法重载
{
    stream << vertex.x <<", "<< vertex.y <<", "<< vertex.z;
    return stream;
}

int main()
{
   // Vertex* vertices = new Vertex[5];//还是基于堆的固定大小的分配
    std::vector<Vertex> vertices;//尖括号中是vertices数组中元素的类型
    vertices.push_back({1,2,3});
    vertices.push_back({4,5,6});//向数组中添加元素
    for(int i=0;i<vertices.size();i++) //遍历数组
    {
        std::cout<< vertices[i] << std::endl;
    }
    
    vertices.erase(vertices.begin()+1);  
    //删除数组中特定的元素,erase()函数接收的参数是迭代器,因此我们不可以写vertices[1],我们要写vertices.begin()
    
    for(Vertex& v:vertices)
    {
        std::cout<<v<<std::endl;
    }
    std::cin.get();
}

vector如何优化?如何避免复制?

请看下一篇博客~~~


http://www.kler.cn/news/322713.html

相关文章:

  • 统信服务器操作系统【targetcli部署】
  • HarmonyOS应用开发(组件库)--组件模块化开发、工具包、设计模式(持续更新)
  • 【hadoop安装】
  • 微服务的优点及在云原生时代的合理落地方式
  • 光伏发电生活废水处理设备产地货源
  • 828华为云征文|华为云Flexus云服务器X实例之openEuler系统下搭建MaxKB开源知识库问答系统
  • 中国的互联网电商,终于还是“连上了”
  • 云手机可以挂在服务器使用吗?
  • 基于大数据技术的足球数据分析与可视化系统
  • 2024.9.27
  • 解决setMouseTracking(true)后还是无法触发mouseMoveEvent的问题
  • 神经网络(一):神经网络入门
  • vue echarts tooltip动态绑定模板,并且处理vue事件绑定
  • 每日论文6—16ISCAS一种新型低电流失配和变化电流转向电荷泵
  • 小学生管理系统项目
  • 前后端数据加密与解密
  • Win11家庭版升级专业版
  • 语言的输入
  • Thinkphp5x远程命令执行 靶场攻略
  • vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源
  • Elasticsearch黑窗口启动乱码问题解决方案
  • 同声传译软件推荐哪个好?这些工具助你提升翻译效率
  • 物联网系统中声音拾取音频方案_咪头
  • element plus block报错
  • “创新驱动·融合发展”长三角软件产业盛会“2024南京软博会”
  • neo4j关系的创建删除 图的删除
  • Linux `readlink` 命令详解:轻松解析符号链接
  • C++在线开发环境搭建(WEBIDE)
  • 风景视频素材高清无水印怎么找?推荐几个风景视频素材下载网站
  • uniapp APP自动更新组件