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.rhkb.cn/news/296776.html

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

相关文章

StarRocks实战——携程火车票指标平台建设

目录 前言 一、早期OLAP架构与痛点 二、指标平台重构整体设计 2.1 指标查询过程 2.1.1 明细类子查询 2.1.2 汇总类子查询 2.1.3 “缓存” 2.2 数据同步 三、Starrocks使用经验分享 3.1 建表经验 3.2 数据查询 3.3 函数问题 四、查询性能大幅提升 五、 后续优化方…

C++实现二叉搜索树的增删查改(非递归玩法)

文章目录 一、二叉搜索树的概念结构和时间复杂度二、二叉搜索树的插入三、二叉搜索树的查找四、二叉搜索树的删除&#xff08;最麻烦&#xff0c;情况最多&#xff0c;一一分析&#xff09;3.1首先我们按照一般情况下写&#xff0c;不考虑特殊情况下4.1.1左为空的情况&#xff…

多线程--深入探究多线程的重点,难点以及常考点线程安全问题

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

C语言交换二进制位的奇数偶数位

基本思路 我们要先把想要交换的数的二进制位给写出来假如交换13的二进制位&#xff0c;13的二进制位是 0000 0000 0000 0000 0000 0000 0000 1101然后写出偶数位的二进制数&#xff08;偶数位是1的&#xff09; 1010 1010 1010 1010 1010 1010 1010 1010然后写出奇数位的二进…

2012年认证杯SPSSPRO杯数学建模C题(第一阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现&#xff1a; 从 1984 年的美国洛杉矶奥运会开始&#xff0c;奥运会就不在成为一个“非卖品”&#xff0c;它在向观众诠释更高更快更强的体育精神的同时&#xff0c;也在攫取着巨大的商业价值&#…

Spring Boot Mockito (三)

Spring Boot Mockito (三) 这篇文章主要是讲解Spring boot 与 Mockito 集成测试。 前期项目配置及依赖可以查看 Spring Boot Mockito (二) - DataJpaTest Spring Boot Mockito (一) - WebMvcTest Tag("Integration") SpringBootTest // TestMethodOrder(MethodOr…

go 指针和内存分配

定义 了解指针之前&#xff0c;先讲一下什么是变量。 每当我们编写任何程序时&#xff0c;我们都需要在内存中存储一些数据/信息。数据存储在特定地址的存储器中。内存地址看起来像0xAFFFF&#xff08;这是内存地址的十六进制表示&#xff09;。 现在&#xff0c;要访问数据…

程序员们应注意的行业特有的法律问题

大家好&#xff0c;我是不会魔法的兔子&#xff0c;是一枚执业律师&#xff0c;持续分享技术类行业项目风险及预防的问题。 一直以来兔子都在以大家做项目时候会遇到的风险问题做分享&#xff0c;最近有个念头一直挥之不去&#xff0c;就是要不要给我们广大的程序员们也分享一…

【接口】HTTP(1)|请求|响应

1、概念 Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;用于从万维网&#xff08;就是www&#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP协议是基于TCP的应用层协议&#xff0c;它不关心数据传输的细节&#xff0c;主要是用来规定客户端和…

【C++练级之路】【Lv.18】哈希表(哈希映射,光速查找的魔法)

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、哈希1.1 哈希概念1.2 哈希函数1.3 哈希冲突 二、闭散列2.1 数据类型2.2 成员变量2.3 默认成员函数2.…

【yy讲解PostCSS是如何安装和使用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

深度学习:神经网络模型的剪枝和压缩简述

深度学习的神经网路的剪枝和压缩&#xff0c;大致的简述&#xff0c; 主要采用&#xff1a; network slimming&#xff0c;瘦身网络... 深度学习网络&#xff0c;压缩的主要方式&#xff1a; 1.剪枝&#xff0c;nerwork pruing&#xff0c; 2.稀疏表示&#xff0c;sparse rep…

KV260 BOOT.BIN更新 ubuntu22.04 netplan修改IP

KV260 2022.2设置 BOOT.BIN升级 KV260开发板需要先更新BOOT.BIN到2022.2版本&#xff0c;命令如下&#xff1a; sudo xmutil bootfw_update -i “BOOT-k26-starter-kit-202305_2022.2.bin” 注意BOOT.BIN应包含全目录。下面是更新到2022.1 FW的示例&#xff0c;非更新到2022.…

八数码问题——A*算法的应用(A-Star)

文章目录 1 问题描述2 启发式搜索3 A*算法3.1 参考网址3.2 是什么3.3 为什么A*算法适用于八数码问题3.4 A* 算法的基本框架 4 A* 算法如何解决八数码问题4.1 八数码状态的存储4.2 启发式函数4.3 构造目标状态元素位置的字典4.4 在二维列表中查找目标元素4.5 A* 算法主体4.6 路径…

Git 术语及中英文对照

完毕&#xff01;&#xff01;感谢您的收看 ----------★★历史博文集合★★---------- 我的零基础Python教程&#xff0c;Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字…

Ubuntu22.04安装Anaconda

一、下载安装包 下载地址&#xff1a;https://www.anaconda.com/download#Downloads 参考&#xff1a;Ubuntu下安装Anaconda的步骤&#xff08;带图&#xff09; - 知乎 下载Linux 64-Bit (x86) installer 二、安装 在当前路径下&#xff0c;执行命令&#xff1a; bash Ana…

了解以太坊虚拟机(EVM)

了解以太坊虚拟机&#xff08;EVM&#xff09; 以太坊虚拟机&#xff08;Ethereum Virtual Machine&#xff0c;简称EVM&#xff09;是以太坊网络的核心组件之一&#xff0c;它承担着智能合约执行的重要任务 特点 智能合约执行环境&#xff1a;EVM提供了一个安全的环境&#xf…

vxe-table表格组件给row-style和cell-style等修改样式无效的问题,例如:background-color

因情况而异吧&#xff0c;我是因为使用了jsx jsx的语法规则之一&#xff1a;内联样式&#xff0c;要用 style{{key:value}}的形式去写。有的需要以小驼峰式写,例如&#xff1a;font-size需要写成 fontSize background-color就是backgroundColor

【智能排班系统】快速消费线程池

文章目录 线程池介绍线程池核心参数核心线程数&#xff08;Core Pool Size&#xff09;最大线程数&#xff08;Maximum Pool Size&#xff09;队列&#xff08;Queue&#xff09;线程空闲超时时间&#xff08;KeepAliveTime&#xff09;拒绝策略&#xff08;RejectedExecutionH…

Raven:一款功能强大的CICD安全分析工具

关于Raven Raven是一款功能强大的CI/CD安全分析工具&#xff0c;该工具旨在帮助广大研究人员对GitHub Actions CI工作流执行大规模安全扫描&#xff0c;并将发现的数据解析并存储到Neo4j数据库中。 Raven&#xff0c;全称为Risk Analysis and Vulnerability Enumeration for C…