蓝桥杯基础知识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 += 1
std::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 5
std::cout << num << " ";
}
return 0;
}
可结合学习:
蓝桥杯基础知识5 unique()-CSDN博客
C++ vector的用法(整理)-CSDN博客
C++ vector 容器浅析 | 菜鸟教程 (runoob.com)