蓝桥杯基础知识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)

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值