| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 我眼中的vector -> 正文阅读 |
|
[数据结构与算法]我眼中的vector |
目录 1,vector基本概念 功能: ?? vector数据结构和数组非常相似,也称单端数组 ?? vector与普通数组区别: ?? 不同之处在于数组是静态空间,而vector可以动态拓展 动态拓展: ?? 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝到新空间,?????????????????? ?? 释放原空间 前提: ?? 使用vector要包含头文件<vector> 2,构造函数 功能描述: ?? 创建vector容器 函数原型: vector<T> v1;?? //默认构造函数 vector<T>v2(v.begin(),v.end());????? //将begin(),end()区间中的元素拷贝给本身 vector<T>v3(n,elem);??? //构造函数将n个elem拷贝给本身 vector<T>v4(v1);?? //拷贝构造函数 3,赋值操作 功能描述: ?? 给vector容器进行赋值 代码实现:
4,容量和大小 功能描述: ?? 对vector容器的容量和大小操作 函数原型: ? empty();??????????????????????? //判断容器是否为空 ? capacity();??????????????????? //容器的容量 ? size();?????????????????????????? //容器中元素的个数 ? resize(int num);? //重新指定容器的长度为num,若容器变长,则以默认值0填充新位置 ??????????????????????????? //若容器变短,则末尾超出容器长度的元素被删除 ? resize(int num,elem);? //重新指定容器的长度为num,若容器变长,则以elem填充新位置 ???????????????????????????????????? //若容器变短,则末尾超出容器长度的元素被删除 5,插入和删除 功能描述: ?? 对vector容器进行插入,删除操作 函数原型: push_back(elem); //尾部插入元素elem pop_back();????? //删除最后一个元素 insert(const_iterator pos, elem); //第一个参数是迭代器,在迭代器指向位置插入elem insert(const_iterstor pos, int count, elem); erase(const_iterator pos);? 删除迭代器指向的元素 erase(const_iterator start, const_iterator end); //删除迭代器从start到end之间的元素 clear(); //删除容器中所有元素 6,数据存取 功能描述: ?? 对vector容器中的数据进行存取操作 代码实现:
7,互换容器 功能描述: ?? 实现两个容器内的元素进行互换 代码实现:
实际用途:巧用swap()函数可以收缩内存空间 代码详解如下:
本例中的vector<int>(v).swap(v);可以分成两个部分来理解。 vector<int>(v)是一个匿名对象,借助v所用的元素个数来初始化匿名对象的大小,此时大小(容量)是5。swap函数本质上类似于指针的交换,当调用.swap(v)时,就完成了两个容器的交换。匿名对象执行完之后编译器就会自动回收所占用的空间。 8,预留空间 功能描述: ?? 减少vector容器在动态拓展时拓展的次数 函数原型: reserve(int len);? //容器中预留len个元素长度,预留位置不初始化,元素不可访问 vector容器先写到这里吧,如果有错误理解或者不足的地方,欢迎小伙伴们留言指正,如果觉得有用的话麻烦点个关注,初来乍到,这是博主继续创作的动力呀。thank you! 期待下次再见。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:50:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |