C++基础:找出vector容器中最大的两个数
C基础找出vector容器中最大的两个数文章目录C基础找出vector容器中最大的两个数1. 前言2. 动态数组2.1 构造函数2.2 赋值操作2.3 插入和删除2.4 容量和大小2.5 数据存取2.6 互换容器2.7 释放内存3. 迭代器4. 算法4.1 排序4.2 倒序4.3 去重4.4 复制4.5 查找4.6 遍历4.7 随机数4.7.1 srand()函数4.7.2 rand()函数5. 代码演示1. 前言定义一个vector数组并进行初始化向其中填充10个不同的随机数1-100找出容器中最大的两个数并输出。2. 动态数组vector容器是STL标准模板库中最常用的容器之一实现的是一个动态数组即可以进行元素的插入和删除提供了对数组元素的快速随机访问以及在数组尾端增加和删除元素的高效实现在此过程中vector会动态调整所占用的内存空间。2.1 构造函数创建vector容器。函数描述vectorT vT表示数据元素的类型可以是int类型也可以是string对象vector(v.begin(), v.end())将[v.begin(),v.end())区间中的元素拷贝给本身v.begin()表示返回指向容器第一个元素v.end()表示返回指向容器最后一个元素之后的迭代器vector(n, element)构造函数将n个element拷贝给本身vector(const vector vec)拷贝构造函数如vectorint v3(10, 100); vectorint v4(v3);2.2 赋值操作给vector容器进行赋值。函数描述vector operator(const vector vec)重载等号运算符vec.assign(begin, end)将[begin,end)区间中的数据拷贝赋值给vecvec.assign(n, element)将n个element拷贝赋值给vec2.3 插入和删除对vector容器进行插入、删除操作。函数描述vec.push_back(element)在尾部加入一个元素elementvec.pop_back()删除最后一个元素vec.insert(pos,element)在pos位置插入一个element拷贝vec.erase(pos)删除pos位置的数据vec.erase(begin,end)删除[begin,end)区间的数据2.4 容量和大小对vector容器的容量和大小操作。函数描述vec.resize(num)用于设定容器的内存大小vec.reserve(num)用于预分配容器所需的内存空间vec.size()返回容器的数据个数vec.capacity()返回容器的存储容量vec.empty()判断容器是否为空2.5 数据存取对vector中的数据进行存取操作。函数描述vec.front()返回容器中第一个数据元素vec.back()返回容器中最后一个数据元素不检查这个数据是否存在vec.at(index)返回索引为index所指的数据如果index越界抛出std::out_of_range异常operator[ ]通过索引访问vector中的元素如vectorint nums {1, 2, 3, 4, 5}; int element nums[1];2.6 互换容器实现两个容器内元素进行互换。函数描述vec1.swap(vec2)将vec1中的元素和vec2中的元素整体交换2.7 释放内存清空容器中所有数据释放内存。函数描述vec.clear()清空容器中所有数据但不释放内存vec.shrink_to_fit()减少容量以释放内存std::vector().swap(vec)通过赋予一个空的vector来释放容器占用的内存空间3. 迭代器在C中iterator是一种特殊类型的对象它能使得开发者用来遍历容器如vector、list、map等的元素又不需暴露该对象的内部细节。请问一年中有哪几个大月#includeiostream#includealgorithm#includevectorusingnamespacestd;intmain(){vectorintvec{1,2,3,4,5,6,7,8,9,10,11,12};vectorint::iterator it;// 1.使用迭代器删除元素for(itvec.begin();it!vec.end();){if(*it%20)// 删掉偶数元素{itvec.erase(it);}else{it;}}itvec.erase(vec.begin()4,vec.end());// 删掉元素911// 2.使用迭代器插入元素itfind(vec.begin(),vec.end(),7)1;// 返回值是目标元素的下标找不到时返回值为迭代器结尾vectorintvec2{8,10,12};// 插入元素81012vec.insert(it,vec2.begin(),vec2.end());// 3.使用迭代器返回容器的某个元素itvec.begin()1;cout当前月*itendl;// 4.使用迭代器遍历容器cout公历的大月31天;for(itvec.begin();it!vec.end();it){cout*it ;}return0;}运行结果当前月3公历的大月31天1357810124. 算法算法是STL标准模板库中的算法库提供了大量的算法函数可用于各种容器如vector、list、map等的操作。这些算法函数可以大大简化程序员的编程工作同时提高代码的可读性和可维护性。4.1 排序sort()用来对一个序列进行排序。vectorintnums{1,4,5,2,3};sort(nums.begin(),nums.end());4.2 倒序reverse()用来反转容器中的元素顺序。vectorintnums{1,4,5,2,3};sort(nums.begin(),nums.end());reverse(nums.begin(),nums.end());4.3 去重unique()用来实现相邻相同元素的去重。vectorintnums{1,4,5,2,4,1,3};sort(nums.begin(),nums.end());autoitunique(nums.begin(),nums.end());nums.erase(it,nums.end());4.4 复制copy()可以将容器中的元素复制到另一个容器中。intarr[]{1,2,3,4,5};intnsizeof(arr)/sizeof(arr[0]);vectorintvec(n);copy(arr,arrn,vec.begin());4.5 查找find()用来在容器中查找指定的元素该算法返回一个迭代器指向第一个匹配的元素如果没有找到匹配的元素则返回容器的end()迭代器。vectorintvec{1,2,3,4,5,6,7,8,9,10,11,12};autoitfind(vec.begin(),vec.end(),7);4.6 遍历for_each()对容器内的每个元素执行一个操作可以使用函数、函数对象或者Lambda表达式来进行操作。#includeiostream#includealgorithm#includevectorusingnamespacestd;// 一元函数对象classPrint{public:Print(){count0;}voidoperator()(intnum){coutcount:num ;count;}private:intcount;};// 普通函数voidprint(intnum){coutnum ;}intmain(){vectorintvec{2,4,6,8,10};cout传入Lambda表达式endl;for_each(vec.begin(),vec.end(),[](inta){couta ;});coutendl;for_each(vec.begin(),vec.end(),[](intx){x*x;});for(inti0;ivec.size();i){coutvec[i] ;}coutendl;cout传入普通函数endl;for_each(vec.begin(),vec.end(),print);coutendl;cout传入一元函数对象endl;for_each(vec.begin(),vec.end(),Print());coutendl;return0;}运行结果传入Lambda表达式2468104163664100传入普通函数4163664100传入一元函数对象0:41:162:363:644:1004.7 随机数srand()用来初始化随机数种子rand()用来产生随机数。4.7.1 srand()函数随机数产生的初始值种子值srand()函数是随机数发生器的初始化函数和rand()配合使用产生伪随机序列。srand((unsigned)time(NULL));4.7.2 rand()函数如果要生成一个指定范围内的随机整数可以使用取模运算符%将rand()函数的返回值对范围大小取模rand()函数左闭右开。intnumberrand()%max1;//生成1-max的随机整数5. 代码演示#includeiostream#includealgorithm#includevector#includecstdlib#includectimeusingnamespacestd;int*getmax(vectorintvec,intlength){staticintmax[2]{0,0};//加上static关键字定义静态局部变量for(inti0;ilength;i){if(max[0]vec[i]){max[1]max[0];max[0]vec[i];}elseif(max[1]vec[i]){max[1]vec[i];}}//int max *max_element(vec.begin(), vec.end());//vector容器查找最大值returnmax;}intmain(){vectorintvec;//创建动态数组vec.resize(10);//用于设定容器的内存大小且创建元素对象vec.reserve(100);//用于预分配容器所需的内存空间不会构造新的元素vectorint::iterator it;//创建迭代器原来遍历或指向容器里面的元素intlength(int)vec.size();//返回容器元素的个数srand((unsigned)time(NULL));//srand()用来设置rand()产生随机数时的随机数种子for(inti0;ilength;i){vec[i]rand()%1001;//生成1-100的随机数for(intj0;ji;j){//判断和前面的数是否重复if(vec[i]vec[j]){//如果重复重新产生随机数i--;//退回上次外循环终止本次内循环break;}}}//vec.push_back(101);//在尾部加入元素cout容器数据endl;for(itvec.begin();it!vec.end();it){cout*it ;//使用迭代器访问元素}coutendl;//vec.shrink_to_fit();//成功退回未使用的内存空间cout容器的数据个数为vec.size()容器的存储容量为vec.capacity()endl;int*maxgetmax(vec,length);cout容器中最大的两个数endl;for(inti0;i2;i){cout第i1个数是*(maxi)endl;}return0;}运行结果容器数据4488213819595076475容器的数据个数为10容器的存储容量为100容器中最大的两个数 第1个数是88第2个数是75✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨——以上内容是关于如何用C语言找出vector容器中最大的两个数希望对初学者或再次学习者有所帮助基础打扎实不怕风吹雨打 如果以上内容有错误或者内容不全望大家提出我也会继续写好每一篇博文待续未完——文优欢迎观看和提问

相关新闻

Git 配置、常见问题与实用技巧全攻略

Git 配置、常见问题与实用技巧全攻略

引言 Git 作为现代软件开发中不可或缺的版本控制工具,其配置的合理性与问题处理能力直接影响开发效率。本文系统整理了 Git 的核心配置方法、高频问题解决方案以及一系列提升效率的实用技巧,旨在帮助开发者快速搭建高效的 Git 工作环境并从容应对日常开发…

2026/8/25 7:55:30 阅读更多 →
微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点)

微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点)

微机原理与接口技术(第六版)周荷琴 — 课后习题答案及解析 适用章节:第2章 8086/8088微处理器、第3章 8086寻址方式与指令系统、第5章 输入输出接口、第8章 中断系统、第9章 串行通信与接口 期末重点标注:⭐ 高频考点 🔴 易错题 🔵 计算题 第2章 — 8086/8088 微处理…

2026/8/25 7:55:30 阅读更多 →
C++整数转字符串自动补零:从基础实现到高性能方案全解析

C++整数转字符串自动补零:从基础实现到高性能方案全解析

1. 项目概述:从“整数转字符串”到“自动补零”的深度需求在C的日常开发中,尤其是处理文件命名、日志记录、数据格式化输出或者界面显示时,我们经常会遇到一个看似简单却暗藏玄机的问题:如何将一个整数(比如123&#x…

2026/8/25 7:55:30 阅读更多 →

最新新闻

解决VMware日志文件缺失错误:从权限到配置的完整修复指南

解决VMware日志文件缺失错误:从权限到配置的完整修复指南

1. 问题定位:当VMware提示“unable to proceed without a log file”时,到底发生了什么?如果你正在用VMware Workstation 16(或者更早的版本)启动一个虚拟机,突然弹出一个错误窗口,上面写着“un…

2026/8/25 8:36:49 阅读更多 →
MySQL小数类型选型指南:DECIMAL、FLOAT与DOUBLE精度与性能实战

MySQL小数类型选型指南:DECIMAL、FLOAT与DOUBLE精度与性能实战

1. 项目概述:为什么MySQL里存个小数,反而最容易翻车?“MySQL数据库(8):数据类型-小数”——这个标题看起来平平无奇,像极了教科书里第8章的课后习题。但我在带团队做金融系统迁移时,…

2026/8/25 8:36:49 阅读更多 →
AI求职转型:两周斩获offer的三大关键问题

AI求职转型:两周斩获offer的三大关键问题

1. 项目概述作为一名在AI行业摸爬滚打多年的从业者,我最近刚经历了一次成功的求职转型,仅用两周时间就拿到了心仪的AI岗位offer。在这个过程中,我总结出了三个关键问题,它们像指南针一样帮助我精准定位适合自己的工作机会。今天就…

2026/8/25 8:36:49 阅读更多 →
px还是dp?AndroidScreenAdaptation两种适配模式怎么选:UI标注px直接写、dp党也适用的完整对比

px还是dp?AndroidScreenAdaptation两种适配模式怎么选:UI标注px直接写、dp党也适用的完整对比

px还是dp?AndroidScreenAdaptation两种适配模式怎么选:UI标注px直接写、dp党也适用的完整对比 【免费下载链接】AndroidScreenAdaptation A light and easy-to-use Android development screen adaptation tool library(一个轻量好用的安卓开发屏幕适配工…

2026/8/25 8:36:49 阅读更多 →
HyperLine Spotify插件深度解析:如何在macOS终端实时显示正在播放歌曲(完整原理指南)

HyperLine Spotify插件深度解析:如何在macOS终端实时显示正在播放歌曲(完整原理指南)

HyperLine Spotify插件深度解析:如何在macOS终端实时显示正在播放歌曲(完整原理指南) 【免费下载链接】hyperline ✨ Status line plugin for Hyper ✨ 项目地址: https://gitcode.com/gh_mirrors/hy/hyperline HyperLine 是一款为 Hy…

2026/8/25 8:36:49 阅读更多 →
foobox-cn:三步给foobar2000换上现代化DUI皮肤,新手直接上手

foobox-cn:三步给foobar2000换上现代化DUI皮肤,新手直接上手

foobox-cn:三步给foobar2000换上现代化DUI皮肤,新手直接上手 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobar2000的音质口碑一直在线,但默认界面还是那套灰扑…

2026/8/25 8:35:49 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →