5.vector容器的使用

文章目录

    • vector容器
      • 1.构造函数
        • 代码工程
        • 运行结果
      • 2.赋值
        • 代码工程
        • 运行结果
      • 3.容量和大小
        • 代码工程
        • 运行结果
      • 4.插入和删除
        • 代码工程
        • 运行结果
      • 5.数据存取
        • 工程代码
        • 运行结果
      • 6.互换容器
        • 代码工程
        • 运行结果
      • 7.预留空间
        • 代码工程
        • 运行结果

vector容器

1.构造函数

/*1.默认构造-无参构造*/
/*2.通过区间的方式进行构造*/
/*3.n个elem方式构造*/
/*4.拷贝构造*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>using namespace std;void printVector(const vector<int>&v)
{for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{/*1.默认构造-无参构造*/vector<int>v1;/*尾插*/for (int i = 0; i < 5 ; i++){v1.push_back(i);}cout << "v1容器的数据: ";/*打印*/printVector(v1);/*2.通过区间的方式进行构造*/vector<int>v2(v1.begin(), v1.end());cout << "v2容器的数据: ";/*打印*/printVector(v2);/*3.n个elem方式构造*/vector<int>v3(5, 100);cout << "v3容器的数据: ";/*打印*/printVector(v3);/*4.拷贝构造*/vector<int>v4(v3);cout << "v4容器的数据: ";/*打印*/printVector(v4);return;
}int main()
{test01();return 0;
}
运行结果

在这里插入图片描述

2.赋值

/* 1.赋值  operator= */
/* 2.赋值  assign 迭代器区间*/
/* 3.赋值  assign n个elem的方式*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>using namespace std;void printVector(const vector<int>&v)
{for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;return;
}void test()
{vector<int>v1;/*尾插*/for (int i = 0; i < 5; i++){v1.push_back(i);}cout << "v1容器的数据: ";printVector(v1);/* 1.赋值  operator= */vector<int>v2;v2 = v1;cout << "v2容器的数据: ";printVector(v2);/* 2.赋值  assign 迭代器区间*/vector<int>v3;v3.assign(v2.begin(), v2.end());/*注意是:闭开区间*/cout << "v3容器的数据: ";printVector(v3);/* 3.赋值  assign n个elem的方式*/vector<int>v4;v4.assign(5, 200);cout << "v4容器的数据: ";printVector(v4);return;
}int main()
{test();return 0;
}
运行结果

在这里插入图片描述

3.容量和大小

/*1.empty() 如果为不空,返回值是0*/
/*2.capacity() 查询容量*/
/*3.size() 查询容器中的数据个数*/
/*4.resize() 重新指定大小*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>using namespace std;void printVector(const vector<int>&v)
{for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;return;
}void test()
{vector<int>v1;/*尾插*/for (int i = 0; i < 10; i++){v1.push_back(i);}cout << "v1容器的数据: ";printVector(v1);/*1.empty() 如果为不空,返回值是0*/if (v1.empty()){cout << "v1容器为空" << endl;return ;}/*2.capacity() 查询容量*/cout << "v1的容量为:" << v1.capacity() << endl;/*3.size() 查询容器中的数据个数*/cout << "v1的大小为:" << v1.size() << endl;/*4.resize() 重新指定大小*/cout << "v1重新指定长度为15时 :";v1.resize(15);/*如果重新指定的比原来长了,默认用0填充新的位置*///v1.resize(15, 100);/*利用重载版本,可以指定默认值的填充*/printVector(v1);cout << "v1重新指定长度为5时 :";v1.resize(5);/*如果重新指定的比原来短了,超出的部分会删除掉*/printVector(v1);return;
}int main()
{test();return 0;
}
运行结果

在这里插入图片描述

4.插入和删除

/*1.尾删*/
/*2.插入 - 迭代器输入*/
/*3.删除 - 迭代器输入*/
/*4.清空*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>using namespace std;/*1.尾删*/
/*2.插入 - 迭代器输入*/
/*3.删除 - 迭代器输入*/
/*4.清空*/
void printVector(const vector<int>&v)
{for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}void test()
{vector<int>v1;/*尾插*/v1.push_back(10);v1.push_back(20);v1.push_back(30);v1.push_back(40);v1.push_back(50);cout << "v1容器的数据: ";printVector(v1);/*1.尾删*/v1.pop_back();cout << "尾删后v1容器中的数据: ";printVector(v1);/*2.插入- 迭代器输入*/v1.insert(v1.begin(), 1000);cout << "插入后v1容器中的数据: ";printVector(v1);/*利用重载的版本,可以插入多个重复的数据*/v1.insert(v1.begin(), 2, 2000);cout << "插入后v1容器中的数据: ";printVector(v1);/*3.删除 - 迭代器输入*/v1.erase(v1.begin());cout << "删除后v1容器中的数据: ";printVector(v1);/*删除 - 区间删除*/v1.erase(v1.begin(), v1.end());if (v1.empty())/*v1为空,empty()返回值为1*/{cout << "当前容器为空!" << endl;}/*尾插*/v1.push_back(10);v1.push_back(20);printVector(v1);/*4.清空*/v1.clear();cout << "清空v1容器中的数据: ";if (v1.empty())/*v1为空,empty()返回值为1*/{cout << "当前容器为空!" << endl;}return;
}int main()
{test();return 0;
}
运行结果

在这里插入图片描述

5.数据存取

/*1.利用[]方式访问数组中的元素*/
/*2.利用at方式访问数组中的元素*/
/*3.获取第一个元素*/
/*4.获取第最后一个元素*/
工程代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>using namespace std;/*1.利用[]方式访问数组中的元素*/
/*2.利用at方式访问数组中的元素*/
/*3.获取第一个元素*/
/*4.获取第最后一个元素*/void test()
{vector<int>v1;/*尾插*/v1.push_back(10);v1.push_back(20);v1.push_back(30);v1.push_back(40);v1.push_back(50);cout << "利用[]访问v1容器的数据: ";/*1.利用[]方式访问数组中的元素*/for (int i = 0; i < v1.size(); i++){cout << v1[i] << " ";}cout << endl;cout << "利用at访问v1容器的数据: ";/*2.利用at方式访问数组中的元素*/for (int i = 0; i < v1.size(); i++){cout << v1.at(i) << " ";}cout << endl;cout << "访问v1容器的第一个数据: ";/*3.获取第一个元素*/cout << v1.front() << endl;cout << "访问v1容器的最后一个数据: ";/*4.获取第最后一个元素*/cout << v1.back() << endl;return;
}int main()
{test();return 0;
}
运行结果

在这里插入图片描述

6.互换容器

代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>using namespace std;void printVector(const vector<int>&v)
{for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}void test()
{vector<int>v1;/*尾插*/v1.push_back(10);v1.push_back(20);v1.push_back(30);v1.push_back(40);v1.push_back(50);cout << "v1容器的数据: ";printVector(v1);vector<int>v2;/*尾插*/v2.push_back(100);v2.push_back(200);v2.push_back(300);v2.push_back(400);v2.push_back(500);cout << "v2容器的数据: ";printVector(v2);cout << "-----------交换容器的数据后-----------" << endl;/*交换两个容器中的数据*/v1.swap(v2);cout << "v1容器的数据: ";printVector(v1);cout << "v2容器的数据: ";printVector(v2);return;
}void test01()
{/*交换容器的实际作用:利用swap可以收缩内存空间*/vector<int>v;for (int i = 0; i < 100000; i++){v.push_back(i);}cout << "v容器的容量:" << v.capacity() << endl;cout << "v容器的大小:" << v.size() << endl;/*重新指定大小*/v.resize(5);cout << "重新指定v容器的大小: " << endl;cout << "v容器的容量:" << v.capacity() << endl;cout << "v容器的大小:" << v.size() << endl;cout << "收缩v容器的大小: " << endl;/*利用swap收缩内存空间*/vector<int>(v).swap(v);cout << "v容器的容量:" << v.capacity() << endl;cout << "v容器的大小:" << v.size() << endl;return;
}
int main()
{test();cout << endl;cout << "swap的实际作用" << endl;test01();return 0;
}
运行结果

在这里插入图片描述

7.预留空间

代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>using namespace std;void printVector(const vector<int>& v)
{for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}void test()
{vector<int>v1;int* p = NULL;int num = 0;/*计算出尾插十万次,容器重新开辟空间的次数*/for (int i = 0; i < 100000; i++){v1.push_back(i);if (p != &v1[0]){num++;p = &v1[0];}}cout << "v1容器重新开辟空间的次数:" << num << endl;return;
}void test01()
{vector<int>v1;int* p = NULL;int num = 0;/*预留空间 - reserve*/v1.reserve(100000);p = NULL;for (int i = 0; i < 100000; i++){v1.push_back(i);if (p != &v1[0]){num++;p = &v1[0];}}cout << "预留空间后v1容器重新开辟空间的次数:" << num << endl;return;
}int main()
{test();cout << endl;test01();return 0;
}
运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十三届蓝桥杯JavaA组省赛真题 - 求和

解题思路&#xff1a; 这&#xff0c;真的是&#xff0c;省赛真题吗... public class Main {public static void main(String[] args) {long res 0;for (int i 1; i < 20230408; i) {res i;}System.out.print(res);} }

C#学习笔记 面试提要

冒泡 for (int m 0; m < arr.Length; m) { for (int n 0; n < arr.Length - 1 - m; n) { if (arr[n] > arr[n1]) { int temp arr[n]; arr[n] arr[n 1]; arr[n1] temp; } } } 选择 for (int m 0; m < arr.Length; m) { int index 0; for (int n 1; n < …

企业安全体系建设的实践指南:策略制定与实施细节

在网络安全行业&#xff0c;安全Web漏洞挖掘工程师已经层出不穷&#xff0c;然而拥有甲方安全建设经验的工程师相对较为稀缺。在企业招聘安全工程师时&#xff0c;除了对安全漏洞挖掘能力的重视&#xff0c;更加关注是否具备甲方安全体系建设方面的思维。 本次分享聚焦于甲方安…

PyCharm中配置PyQt5并添加外部工具

Qt Designer、PyUIC和PyRcc是Qt框架下的三个重要工具&#xff0c;总的来说&#xff0c;这三个工具各司其职&#xff0c;相辅相成&#xff0c;能显著提升Qt开发的速度与效率。 Qt Designer&#xff1a;是一个用于创建图形用户界面的工具&#xff0c;可轻松构建复杂的用户界面。…

面试智力题

面试智力题 二进位bit1. 题目&#xff1a;一千杯水&#xff0c;一杯水有毒&#xff0c;怎么用10只老鼠&#xff0c;把这杯水找出来&#xff08;1&#xff09;解法1&#xff1a;常规法&#xff08;2&#xff09;bit法&#xff08;位数法&#xff09; (3) 时间法三级目录 二进位b…

pygame的搭建

pygame的介绍与环境搭建 Pygame模块 安装 WindowsR打开命令窗口&#xff0c;输入&#xff1a; pip install pygame 或者安装指定版本 pip install pygame 2.3.0常用模块 在Pygame框架中有很多模块&#xff0c;官方网址pygame news 。 其中最常用模块的具体说明如下表所示…

Java 操作 Hadoop 集群之 HDFS 的应用案例详解

Java 操作 Hadoop 注意:本文内容基于 Hadoop 集群搭建完成基础上: Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤 本文的内容是基于下面前提: Hadoop 集群搭建完成并能正常启动和访问Idea 和 Maven 分别安装完成需要有 JavaSE 基础和熟悉操作hadoop 的 hdfs dfs 命令…

【C语言基础】:自定义类型(二) -->联合和枚举

文章目录 一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体练习 二、枚举类型2.1 枚举类型的声明2.2 枚举的优点 书山有路勤为径&#xff0c;学海无涯苦作舟。 创作不易&#xff0c;宝子们&#xff01;如果这篇…

计算机网络: 点对点协议 PPP

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

单片机简介(一)

51单片机 一台能够运行的计算机需要CPU做运算和控制&#xff0c;RAM做数据存储&#xff0c;ROM做程序存储&#xff0c;还有输入/输出设备&#xff08;串行口、并行输出口等&#xff09;&#xff0c;这些被分为若干块芯片&#xff0c;安装在主板&#xff08;印刷线路板&#xf…

websocketpp上手笔记-Windows安装

WebSocketpp是什么 最近手上有一个c项目&#xff0c;需要用websocket从服务器端收内容。于是网上找了圈&#xff0c;发现WebSocketpp库可以做websocket的客户端。 WebSocketpp也叫WebSocket&#xff0c;github地址是&#xff1a;https://github.com/zaphoyd/websocketpp&…

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

远控桌面多任务并发文件保密传输

远程桌面文件传输是一个重要的功能&#xff0c;大多数远控都是用的桌面程序模式&#xff0c;利用系统自带复制粘贴拖拽文件拷贝功能&#xff0c;做一个ole调用对接&#xff0c;可以将很多控制权交给操作系统。 但我做的是浏览器版&#xff0c;浏览器是沙盒原理&#xff0c;为了…

【2024系统架构设计】案例分析- 5 Web应用

目录 一 基础知识 二 真题 一 基础知识 1 Web应用技术分类 大型网站系统架构的演化:高性能、高可用、可维护、应变、安全。 从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务。

Intel FPGA (6):dac tlv5618a

Intel FPGA (6)&#xff1a;dac tlv5618a 前提摘要 个人说明&#xff1a; 限于时间紧迫以及作者水平有限&#xff0c;本文错误、疏漏之处恐不在少数&#xff0c;恳请读者批评指正。意见请留言或者发送邮件至&#xff1a;“Email:noahpanzzzgmail.com”。本博客的工程文件均存放…

Cesium 批量种树

1、准备树种建模 分各种级别建模LOD1-LODN 其中meta.json长这样&#xff1a; Gltf再3Dmax中导出Obj,再通过ObjToGltf的工具转换&#xff0c;参考 https://editor.csdn.net/md/?articleId96484597 2、准备shp点数据。&#xff08;shp中的点位就是种树的位置&#xff09; 3、准…

R语言技能 | 不同数据类型的转换

原文链接&#xff1a;R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天&#xff0c;再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢&#xff1f; 我们在使用R语言做数据分析时&#xff0c;会一直对数据进行不同类型的转换&#xff0c;有时候…

String Encryptor custom Bean not found with name ‘jasyptStringEncryptor‘...

项目采用 spring boot 2.6.13 jasypt-spring-boot-starter 3.0.5 apollo-client 1.6.0 自定义jasyptStringEncryptor&#xff0c;服务器上启动死活报找不到bean jasyptStringEncryptor&#xff0c;采用默认的&#xff0c;密文配置项自然解密失败导致服务无法启动。 经过一…

海康Ehome2.0与5.0设备接入EasyCVR视频汇聚平台时的配置区别

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

plasmo内容UI组件层级过高导致页面展示错乱

我使用plasmo写了一个行内样式的UI组件&#xff0c;但是放到页面上之后&#xff0c;会和下拉组件出现层级错乱&#xff0c;看了一下样式&#xff0c;吓我一跳&#xff1a;层级竟然设置的如此之高 所以就需要将层级设置低一点&#xff1a; #plasmo-shadow-container {z-index: …