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如何优化?如何避免复制?

请看下一篇博客~~~

相关推荐
SilentSamsara1 分钟前
类型注解进阶:Union、Optional、Any 与 Callable
开发语言·python·青少年编程
历程里程碑1 分钟前
56 . 高效ET非阻塞IO服务器设计指南
java·运维·服务器·开发语言·数据结构·c++·排序算法
恣艺6 分钟前
Python 游戏开发与文件处理:PyGame + Turtle + openpyxl + python-docx + PyPDF2
开发语言·python·pygame
南境十里·墨染春水13 分钟前
数据结构 —— 顺序表
数据结构
高林雨露13 分钟前
kotlin 相关code
开发语言·kotlin
我还记得那天16 分钟前
函数的递归调用
c语言·开发语言·visualstudio
zhangfeng113317 分钟前
ThinkPHP5 事件系统的标准最佳实践 事件系统的完整设计逻辑tags.php tags.php(事件地图)
android·开发语言·php
xyq202420 分钟前
HTML 标签简写及全称
开发语言
tongluowan00721 分钟前
数据结构 Bitmap(位图)示例 - 用户签到系统
开发语言·数据结构·bitmap·用户签到系统
就叫_这个吧21 分钟前
Java线程池应用的四种方式+线程池底层实现原理
java·开发语言