0
点赞
收藏
分享

微信扫一扫

【C++ 容器整理】vector 可变长动态数组

左小米z 2022-02-04 阅读 55
c++leetcode

目录

前言

一、vector 特点

二、c++ 中使用

1. 头文件

2. 初始化

3. 访问元素

4. 获得 vector 的属性

5. 增删改元素

6. 特殊

参考文章


前言

本文章为学习过程中的总结,部分参考文章已附文末,欢迎内容上、排版上、表达上各种批评指正😀。


一、vector 特点

  • 是顺序容器,支持随机访问;
  • 尾部添加元素时无需重新分配空间;
  • T(访问) = a;
  • 初始创建时容量为 0,谨防数组越界;

二、c++ 中使用

1. 头文件

#include <vector>

2. 初始化

1)//容量缺省默认为 0,值缺省默认为 0

2) // 初始化拷贝

3)//直接赋值

4)//切片获取另一个 vector 的局部/全部

3. 访问元素

1)创建迭代器访问

2)迭代器定位

  • (正向迭代器)定位开头:i = var_name.begin();
  • (正向迭代器)末尾:i = var_name.end() - 1;//end() 返回最后一个元素后面位置的迭代器;
  • (反向)末尾:j = var_name.rbegin();
  • (反向)开头:j = var_name.rend();

3) 随机访问

在容量已知的情况下可以利用 var_name[k] 访问第 k + 1 个元素(k 从 0 开始);

不知道容量的话小心越界。

4) 头尾快速访问

  • var = var_name.front();
  • var = var_name.back();

5) 遍历

(正向迭代器)

(反向迭代器倒着输出)

(随机访问)

4. 获得 vector 的属性

1)判空 var_name.empty(); // 空返回 true

2)大小 var_name.size();

5. 增删改元素

1)末尾增加元素 var_name.push_back(elem1)

等同于 var_name.emplace(elem1) // 据说更高效

2) 定位插入(3 类)

  • iterator insert( iterator loc, const TYPE &val ); //在指定迭代器位置插入某值,返回插入值的迭代器
  • void insert( iterator loc, size_type num, const TYPE &val ); //要插入的迭代器位置,插入元素数量,元素的值
  • void insert( iterator loc, input_iterator start, input_iterator end ); //要插入的迭代器位置,插入元素迭代器起始~结束位置,便于插入某一段的元素进去

3)删除末尾 var_name.pop_back()

4)清空 var_name.clear()

5)定位删除

  • iterator erase(iterator position); // 指定某个迭代器的值删除
  • iterator erase(iterator first, iterator last); // 制定一段区间删除

6)修改:访问后直接改值;

6. 特殊

交换 var_name.swap(& another_vector);


参考文章

C++:vector 六种初始化方法 - 简书

[c++] vector中insert()的用法详解_turry的博客-CSDN博客_vector的insert

vector的remove和erase函数的区别_xzymmd的博客-CSDN博客_vector.erase

举报

相关推荐

0 条评论