c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

C++ vector(向量)使用方法详解

简介

vector 是 C++ STL 中的一个重要数据结构,用于实现动态数组。它具有许多优点,包括支持尾部插入、常量时间访问、动态分配内存等。

基本操作

创建 vector

创建一个空的 vector 和一个具有初始值的 vector 的方式如下:

#include <vector>
using namespace std;

int main() {
    // 创建一个空的 vector
    vector<int> vec1;

    // 创建一个具有初始值的 vector
    vector<int> vec2 {1, 2, 3, 4, 5};

    // 或者
    vector<int> vec3 = {1, 2, 3, 4, 5};

    return 0;
}

访问 vector

vector 可以通过下标或迭代器访问,如下所示:

vector<int> vec {1, 2, 3, 4, 5};

// 使用下标访问
int x = vec[0];

// 使用迭代器访问
for (auto it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << endl;
}

往 vector 中添加元素

vector 可以使用 push_back() 添加元素,也可以使用 insert() 在任意位置插入元素,如下所示:

vector<int> vec {1, 2, 3, 4, 5};

// 在尾部插入一个元素
vec.push_back(6);

// 在任意位置插入元素
vec.insert(vec.begin() + 2, 10);

// 在任意位置插入多个元素
vec.insert(vec.begin() + 3, {7, 8, 9});

从 vector 中删除元素

vector 可以使用 pop_back() 删除尾部元素,也可以使用 erase() 删除任意位置的元素,如下所示:

vector<int> vec {1, 2, 3, 4, 5};

// 删除尾部元素
vec.pop_back();

// 删除任意位置元素
vec.erase(vec.begin() + 2);

// 删除任意位置多个元素
vec.erase(vec.begin() + 1, vec.begin() + 3);

顺序访问 vector 的多种方式

使用下标遍历

如前面的示例所示,vector 可以使用下标访问,因此可以使用 for 循环遍历:

vector<int> vec {1, 2, 3, 4, 5};

for (int i = 0; i < vec.size(); ++i) {
    cout << vec[i] << endl;
}

遍历时修改元素

使用范围 for 循环遍历时,可以使用引用修改 vector 中的元素:

vector<int> vec {1, 2, 3, 4, 5};

for (int& x : vec) {
    x = x * x;
}

使用迭代器遍历

使用迭代器遍历,可以使用 while 循环或 for 循环:

vector<int> vec {1, 2, 3, 4, 5};

// 使用 while 循环
auto it = vec.begin();
while (it != vec.end()) {
    cout << *it << endl;
    ++it;
}

// 使用 for 循环
for (auto it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << endl;
}

使用 std::for_each() 遍历

std::for_each() 是一个 STL 算法,可以将指定的函数应用于 vector 的每个元素:

vector<int> vec {1, 2, 3, 4, 5};

// 定义一个用于输出元素的函数
void print(int x) {
    cout << x << endl;
}

// 使用 std::for_each() 遍历
for_each(vec.begin(), vec.end(), print);

示例

示例 1:使用 vector 存储字符串

下面是一个示例,使用 vector 存储字符串,并使用迭代器遍历:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<string> v;

    // 添加元素
    v.push_back("Hello");
    v.push_back("World");

    // 使用迭代器遍历
    for (auto it = v.begin(); it != v.end(); ++it) {
        cout << *it << endl;
    }

    return 0;
}

输出:

Hello
World

示例 2:使用 vector 实现向量加法

下面是一个示例,使用 vector 实现两个向量之间的加法,并使用范围 for 循环遍历:

#include <iostream>
#include <vector>
using namespace std;

vector<int> add(vector<int>& v1, vector<int>& v2) {
    vector<int> result(v1.size());

    for (int i = 0; i < v1.size(); ++i) {
        result[i] = v1[i] + v2[i];
    }

    return result;
}

int main() {
    vector<int> v1 {1, 2, 3, 4, 5};
    vector<int> v2 {6, 7, 8, 9, 10};

    // 计算向量和
    vector<int> v = add(v1, v2);

    // 使用范围 for 循环遍历
    for (int x : v) {
        cout << x << " ";
    }
    cout << endl;

    return 0;
}

输出:

7 9 11 13 15

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++ vector(向量)使用方法详解(顺序访问vector的多种方式) - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Android自定义View绘制贝塞尔曲线实现流程

    下面就是对于“Android自定义View绘制贝塞尔曲线实现流程”的详细讲解,我们来分几个步骤来说明。 第一步:了解贝塞尔曲线 在绘制贝塞尔曲线前,我们需要先了解什么是贝塞尔曲线。贝塞尔曲线又称贝氏曲线,是一种数学上的曲线,利用控制点的位置来确定曲线的形状。 贝塞尔曲线由一个起点、一个终点和一个或多个控制点组成,利用这些点可以拟合出多种不同的曲线形状,例如直…

    C 2023年5月22日
    00
  • Qt学习之容器类的使用教程详解

    Qt学习之容器类的使用教程详解 介绍 Qt框架提供了许多容器类来帮助开发者高效地管理数据集合。这些容器类提供了各种重载的方法和运算符来满足不同的需求。 本文将详细介绍Qt提供的常用容器类的使用方法和注意事项。 QVector 概述 QVector是Qt提供的动态数组容器类,可以在运行时根据需要自动扩展容量,并且可以方便地访问和修改其中的元素。 常用方法 QV…

    C 2023年5月23日
    00
  • 分享PHP入门的学习方法

    在这里,我会详细讲解如何通过PHP入门学习,以及推荐一些学习资源和方法。 一、为什么学习PHP? 首先让我们了解一下为什么学习PHP。PHP是一种流行的服务器端编程语言,广泛用于Web应用程序开发。随着Web应用程序的快速发展,PHP也变得越来越重要。学习PHP将使您具备创建和维护Web应用程序所需的技能。此外,PHP也很容易学习,并且有众多的学习资源和社区…

    C 2023年5月22日
    00
  • 浅谈Python 中的复数问题

    浅谈Python 中的复数问题 什么是复数 在数学中,负数的出现,让数轴不再只有正方向,还有负方向。同样的,对于一些无法用实数描述的概念或者物理量(例如电阻、电容、力等),我们也需要在数轴的虚数方向上寻找答案。 虚数定义为 $\sqrt{-1}$ ,通常用字母 i 来表示。复数是实数与虚数的和,形如 $a+bi$ 的形式。 Python 中的复数 在 Pyt…

    C 2023年5月23日
    00
  • C/C++混合编程之extern “C”的使用示例

    废话不多说,下面就是C/C++混合编程之extern “C”的使用攻略。 什么是extern “C”? extern “C”是C++语言的一种扩展语法,主要用来指定C和C++的链接约定(也称为命名规则),通俗来说就是在C++代码中使用C语言风格进行编译和链接,以保证与C语言编写的代码进行协同工作时能够正常工作。 在C++中,函数会被编译后加上一些额外的前缀和…

    C 2023年5月23日
    00
  • C语言课程设计之抽奖系统

    C语言课程设计之抽奖系统 系统简介 本系统是一个基于C语言的抽奖系统,主要用于生成指定数量的随机码,并且可以根据指定条件进行抽奖。 系统需求 在终端中实现以下功能: 生成指定数量的随机码 按照指定条件抽取随机码 系统设计 随机码生成 由于随机码的生成是本系统的重点之一,因此我们需要用到C语言中的伪随机数生成函数rand(),并且在使用rand()函数之前,需…

    C 2023年5月23日
    00
  • 浅析Lua编程中的异常处理

    浅析Lua编程中的异常处理 异常处理是一种非常重要的编程实践,它可以让我们更好地处理代码中可能出现的错误,提高程序的健壮性。在Lua编程中,异常处理同样非常重要而且也非常容易实现,本文将会对Lua编程中的异常处理进行浅析。 try-catch 在Lua中,我们可以使用try-catch结构来捕获异常。try语句块中包含可能会出现异常的语句,当其中的某个语句发…

    C 2023年5月23日
    00
  • 如何调用C标准库的exit函数详解

    如何调用C标准库的exit函数详解 什么是exit函数? exit()函数是C语言标准库中的一个函数,用于退出当前的程序。调用这个函数可以终止程序的执行,并在终止前对程序进行一些清理工作,如释放内存等操作。 如何调用exit函数? #include <stdlib.h> void exit(int status); 在使用exit()函数之前,你…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部