当前位置: 首页 > news >正文

蓝桥杯基础知识7 vector

蓝桥杯基础知识7 vector

vector 的定义和特性:在C++中,vector是一个动态数组容器,可以存储一系列相同类型的元素。

vector 是一个模板类,使用之前包含头文件<vector>,声明一个vector对象vec,T是存储在vector中的元素类型。

std::vector<T> vec;

容器大小:vector 是一个动态数组,根据需要自动调整大小,根据元素的数量动态分配内存空间。

元素访问:通过索引访问 vector 中的元素,索引从0开始,最后一个索引是 size() - 1,可以使用[]运算符或 at() 函数来访问元素。

元素添加和删除:push_back() 函数在vector的末尾添加元素,pop_back()函数删除末尾元素,insert() 函数在指定位置插入元素,erase() 函数删除指定位置的元素。

容器大小管理:size() 函数获取 vector 中元素数量,empty() 函数检查 vector 是否为空,resize() 函数调整 vector 大小。

迭代器:vector 提供迭代器,可遍历容器中的元素,begin() 函数获取指向第一个元素的迭代器,end() 函数获取指向最后一个元素的迭代器。

02 vector 的常用函数

push_back():将元素添加到 vector 末尾。

void push_back(const T& value);

pop_back():删除 vector 末尾元素。

void pop_back();

begin() 和 end():返回指向vector 第一个元素 和 最后一个元素之后位置的迭代器。

std::vector<int> vec = {10, 20, 30};
for (auto it = vec.begin(); it != vec.end(); ++it) { // 迭代器不能写 it += 1std::cout << *it << " ";
}
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;

03 vector 排序去重

#include<algorithm>std::vector<T> vec = {...};
std::sort(vec.begin(), vec.end());

排序:对 vector 排序,使用标准库中的 std::sort 函数。

函数头文件<algorithm>,T是 vector 元素类型,

std::sort 函数接受两个迭代器参数,表示排序范围。

vec.begin() 返回指向 vector 第一个元素的迭代器,

vec.end() 指向最后一个元素之后位置的迭代器。

03 vector 排序去重

去重:去除 vector 中重复元素,使用 std::unique 函数。

#include<algorithm>std::vector<T> vec = {...};
std::sort(vec.begin(), vec.end());
auto last = std::unique(vec.begin(), vec.end());
vec.erase(last, vec.end());

对 vector 排序,方便相同的元素排到相邻的位置,std::unique 函数将重复元素移到 vector  末尾,并返回指向第一个重复元素的迭代器,使用 vec.erase 函数将重复元素删除。

#include<iostream>
#include<vector>
#include<algorithm>int main(){std::vector<int> vec = {2, 1, 3, 2, 4, 1, 5, 4};std::sort(vec.begin(), vec.end());auto last = std:: unique(vec.begin(), vec.end());vec.erase(last, vec.end());for(const auto& num : vec){ // 1 2 3 4 5std::cout << num << " ";}return 0;
}

可结合学习:

蓝桥杯基础知识5 unique()-CSDN博客

C++ vector的用法(整理)-CSDN博客

C++ vector 容器浅析 | 菜鸟教程 (runoob.com)

http://www.lryc.cn/news/298226.html

相关文章:

  • 【Java万花筒】加速Java应用程序:探索性能优化的利器
  • c++ STL系列——(四)queue
  • 2.10日学习打卡----初学RocketMQ(一)
  • Window中出现 结束服务又自动重启的解决方法
  • Bee V2.2 分库分表 Sharding+MongoDB ORM 稳定版发布 (更新 Maven)
  • 机器学习系列——(十五)随机森林回归
  • 【概念板块统计】股票板块一览表 股票概念一览表
  • c#通过反射完成对象自动映射
  • ef core原始sql查询
  • 2024 CKS 题库 | 4、RBAC - RoleBinding
  • Docker Compose实例
  • Mac上新版InfluxDB使用教程
  • 性能篇:网络通信优化之序列化
  • 【UE 游戏编程基础知识】
  • 原语,原子,线程安全
  • fast.ai 机器学习笔记(一)
  • Linux下的socket操作
  • 爬虫练习——动态网页的爬取(股票和百度翻译)
  • Name or service not known问题解决和分析过程解析
  • emmet语法
  • 【PTA主观题】8-1 文件操作
  • 机器学习算法决策树
  • ssh和sftp服务分离
  • Bootstrap学习三
  • 第77讲用户管理功能实现
  • 锐捷(十九)锐捷设备的接入安全
  • 【MySQL题】——基础概念论述(二)
  • Spring Boot + flowable 快速实现工作流
  • (已解决)LaTeX Error: File `svproc.cls‘ not found. (用Springer LNCS 会议Proceedings模板)
  • Spring Boot 自定义指标