【C++】vector中的常见函数和使用

简介: 【C++】vector中的常见函数和使用

前言

感觉vector在目前阶段很常用,就总结记录一些vector的用法

方便自己忘记的时候查找

因为是自用,所以我直接放代码了,只说明如何使用,以及一些小的注意点,对于函数具体实现过程,在这篇文章中,不做过多说明

当然,我也给出了一些使用例子,供大家参考

本文参考:

C++vector操作

代码

#include<iostream>
#include<vector>
using namespace std;
int main()
{
  vector<int>a, b;
  //创建向量a和向量b
  a.assign(b.begin(), b.begin() + 3);
  //将b的下标为0-2的元素赋给a
  a.assign(4, 2);
  //清空a,并向其中存入4个2
  a.back();
  //返回a的最后一个元素
  a.front();
  //返回a的第一个元素
  int i = 3;
  a.at(i);
  //访问下标为i的元素
  a.clear();
  //清空a中的元素
  a.empty();
  //判断a是否为空,空则返回true 非空则返回false
  a.pop_back();
  //删除a的最后一个元素
  a.erase(a.begin(), a.begin() + 1);
  //删除从第0个元素到第1个元素 即删除下标为0的元素
  //使用erase的例子
  /*vector<int>a{ 1,2,3,4,5,6 };
  a.erase(a.begin(), a.begin() + 1);
  for (int ii : a)
  {
    cout << ii << endl;
  }*/
  a.push_back(1);
  //在a的最后一个元素后面放入5
  //使用push_back()的例子
  //vector<int>a{ 1,2,3,4,5,6 };
  //a.push_back(5);
  //for (int ii : a)
  //{
  //  cout << ii << endl;
  //}
  a.insert(a.begin(), 5);
  //在a的下标为0的位置 插入5 剩下的元素统一向后移动一位
  //使用insert的例子
  /*vector<int>a{ 1,2,3,4,5 };
  a.insert(a.begin(), 5);
  for (int ii : a)
  {
    cout << ii << endl;
  }*/
  a.insert(a.begin(), 3, 5);
  //从a的下标为0的位置开始 插入3个元素 其值为5
  //使用insert的例子
  /*vector<int>a{ 1,2,3,4,5 };
  a.insert(a.begin(), 3, 5);
  for (int ii : a)
  {
    cout << ii << endl;
  }*/
  vector<int>b  = { 10,9,8,7,6,5,4 };
  int c[7] = { 11,12,13,14,15,16,17 };
  a.insert(a.begin(), b.begin() + 3, b.begin() + 6);
  //在a下标为0的位置,将b从下标为3的位置开始到下标为6的元素插入
  a.insert(a.begin(), c[2], c[4]);
  //在a下标为0的位置,将c从下标为2到下标为4的元素插入
  //使用insert的例子
  //vector<int>a = { 1,2,3,4 };
  vector<int>b = { 10,9,8,7,6,5,4 };
  //int c[7] = { 11,12,13,14,15,16,17 };
  //a.insert(a.begin(), b.begin() + 3, b.begin() + 6);
  //for (int ii : a)
  //{
  //  cout << ii << endl;
  //}
  //a.insert(a.begin(), c[2], c[4]);
  //for (int ii : a)
  //{
  //  cout << ii << endl;
  //}
  a.size();
  //返回a的元素个数
  a.capacity();
  //返回a在内存中总共可以容纳的元素个数
  a.resize(10);
  //将a现有的元素个数调整为10,多则删,少则补 值随机
  a.resize(10, 2);
  //将a现有的元素个数调整为10,多则删,少则补 值为2
  a.reserve(100);
  //将a的容量扩充至100
  a.swap(b);
  //交换a和b中的所有元素
  return 0;
}

注意点

注释1

vector<int>a = { 1,2,3,4 };
  int c[7] = { 11,12,13,14,15,16,17 };
  a.insert(a.begin(), c[2], c[4]);
  for (int ii : a)
  {
    cout << ii << endl;
  }

当我们这么编写代码时,我们的本意是将从c[2] 到c[4]的元素插入a的第一个元素的位置

但运行结果是:

我们可以知道,如果要连续插入到不是容器中的元素时,是无法实现我们想要的目的的

常见用法

对于vector我们在做题时,通常会用到以下函数

sort排序
reverse逆置
find查找

以及用copy实现两个向量之间的复制

在此只是提一嘴,不做详细介绍,相信大家基本都会使用这些函数

结语

对于vector的常见用法的介绍和学习到这里就结束了,希望对你有帮助,我们下篇文章见~

今天先简单水一篇(bushi


相关文章
|
8月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
220 0
|
算法 编译器 C++
模拟实现c++中的vector模版
模拟实现c++中的vector模版
|
11月前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
666 6
|
存储 编译器 C语言
【c++丨STL】vector模拟实现
本文深入探讨了 `vector` 的底层实现原理,并尝试模拟实现其结构及常用接口。首先介绍了 `vector` 的底层是动态顺序表,使用三个迭代器(指针)来维护数组,分别为 `start`、`finish` 和 `end_of_storage`。接着详细讲解了如何实现 `vector` 的各种构造函数、析构函数、容量接口、迭代器接口、插入和删除操作等。最后提供了完整的模拟实现代码,帮助读者更好地理解和掌握 `vector` 的实现细节。
317 0
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
804 5
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
629 6
|
存储 C++ 索引
【C++打怪之路Lv9】-- vector
【C++打怪之路Lv9】-- vector
332 1
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
178 3