详解C++编程中的vector类容器用法

yizhihongxing

详解C++编程中的vector类容器用法

简介

在 C++ 中,vector 是一个非常实用的容器类,它可以动态调整大小并提供了一系列方便的操作函数。在本文中,我们将详细介绍 vector 类的使用方法,以便能够更好地应用 vector 容器类进行 C++ 编程。

如何使用 vector

首先需要在头文件中包含 vector

#include<vector>

然后可以定义一个 vector 对象:

std::vector<int> myVec;

其中的 <int> 表示这是一个整型的 vector 对象。创建好对象后就可以使用 vector 类的各种函数和属性了。

常用函数

添加元素

vector 容器可以便捷地添加元素,可以在末尾添加一个元素,也可以在任何一个位置插入一个元素。以下是常见的添加元素的函数:

  • push_back():在容器尾部插入一个元素。
  • emplace_back():在容器尾部插入一个元素,它比 push_back() 函数更快,因为它直接在容器内创建对象。
  • insert():在指定位置插入一个元素。

示例代码:

std::vector<int> myVec;
myVec.push_back(1); // 在末尾增加元素
myVec.emplace_back(2); // 在末尾增加元素(更快)
myVec.insert(myVec.begin() + 1, 3); // 在第二个位置插入元素

访问元素

可以用下标的方式或迭代器的方式访问元素,以下是常见的访问元素的函数:

  • []:通过下标访问元素。
  • at():通过下标访问元素,但可以检查边界错误。
  • front():返回容器中的第一个元素。
  • back():返回容器中的最后一个元素。

示例代码:

std::vector<int> myVec{1, 2, 3};
int x = myVec[1]; // 取得第二个元素
int y = myVec.at(2); // 取得第三个元素
int z = myVec.front(); // 取得第一个元素
int w = myVec.back(); // 取得最后一个元素

删除元素

可以用下标的方式或迭代器的方式删除元素,以下是常见的删除元素的函数:

  • erase():删除指定的元素。
  • clear():删除容器的所有元素。

示例代码:

std::vector<int> myVec{1, 2, 3};
myVec.erase(myVec.begin() + 1); // 删除第二个元素
myVec.clear(); // 删除所有元素

示例

示例 1:用 vector 实现栈

#include <iostream>
#include <vector>

class Stack {
public:
    Stack() = default;
    void push(int n) { data_.emplace_back(n); }
    void pop() { data_.pop_back(); }
    int top() const { return data_.back(); }
    bool empty() const { return data_.empty(); }
private:
    std::vector<int> data_;
};

int main() {
    Stack stk;
    stk.push(1);
    stk.push(2);
    std::cout << "Top: " << stk.top() << std::endl; // Top: 2
    stk.pop();
    std::cout << "Top: " << stk.top() << std::endl; // Top: 1
    stk.pop();
    std::cout << "Empty: " << stk.empty() << std::endl; // Empty: 1
    return 0;
}

示例 2:用 vector 实现队列

#include <iostream>
#include <vector>

class Queue {
public:
    Queue() = default;
    void push(int n) { data_.emplace_back(n); }
    void pop() { data_.erase(data_.begin()); }
    int front() const { return data_.front(); }
    bool empty() const { return data_.empty(); }
private:
    std::vector<int> data_;
};

int main() {
    Queue q;
    q.push(1);
    q.push(2);
    std::cout << "Front: " << q.front() << std::endl; // Front: 1
    q.pop();
    std::cout << "Front: " << q.front() << std::endl; // Front: 2
    q.pop();
    std::cout << "Empty: " << q.empty() << std::endl; // Empty: 1
    return 0;
}

总结

vector 容器类用于动态数组的管理,可以快速、方便地增加、删除、访问元素,是 C++ 编程中非常常用的容器类。我们在使用 vector 时需要注意边界情况,避免访问不存在的元素等错误。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解C++编程中的vector类容器用法 - Python技术站

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

相关文章

  • 天天飞车C级赛车奥赛德属性解析 天天飞车奥赛德怎么样

    天天飞车C级赛车奥赛德属性解析 奥赛德的基本属性 奥赛德是一台拥有强大抓地力和过弯性能的赛车,它的基本属性为: 速度:5 加速:4 操控:7 平稳:5 强度:5 其中,操控是奥赛德最出色的一项属性,它让赛手们能够更快地穿越弯道,提高比赛的成绩。 奥赛德的细节属性 奥赛德的细节属性包括: 重量:1350kg 长度:4663mm 宽度:1892mm 车高:142…

    C 2023年5月23日
    00
  • C++类型转换详解

    C++类型转换详解 强制类型转换 强制类型转换可以将一个变量从一种类型转换为另一种类型,例如将浮点数转换为整数,将整数转换为字符等。 static_cast static_cast用于静态类型转换,主要用于不同类型之间的转换。 示例: double d = 3.14; int i = static_cast<int>(d); 这里我们将doubl…

    C 2023年5月23日
    00
  • mysql数据存放的位置在哪

    MySQL是一种关系型数据库管理系统,用于管理和操作数据。在MySQL内部,数据存储在文件中。这些文件位于MySQL的数据目录中。下面我们来详细讲解MySQL数据存放的位置在哪。 MySQL数据目录(Data Directory) MySQL数据目录指的是MySQL服务器实际存储数据的目录。在Unix/Linux系统中,默认的MySQL数据目录是/var/l…

    C 2023年5月23日
    00
  • 解析MySQL中mysqldump工具的基本用法

    我们来详细讲解一下“解析MySQL中mysqldump工具的基本用法”的完整攻略。 什么是mysqldump工具? mysqldump是MySQL数据库备份工具,可以备份MySQL数据。该工具可以将MySQL数据库的数据复制到另一个地方,如另一个服务器或另一个本地文件系统。 基本用法 mysqldump工具的基本用法非常简单,下面给出一个实例。 mysqld…

    C 2023年5月22日
    00
  • C++使用jsoncpp解析json的方法示例

    下面是“C++使用jsoncpp解析json的方法示例”的完整攻略。 1.前言 在开发过程中,经常需要使用json来进行数据交互。本文主要介绍如何在C++中使用jsoncpp库来解析json数据。 2.环境 操作系统:Windows/Linux 编译器:gcc/g++/VS jsoncpp库 3.安装jsoncpp库 jsoncpp库是一个用来解析json的…

    C 2023年5月23日
    00
  • Java中类转json的基类实现

    下面我会详细讲解Java中类转json的基类实现的完整攻略。 1. 需求背景 在开发Web应用程序时,经常需要将Java对象转换为json格式,然后将json格式的数据作为Http响应的主体内容发送给客户端,或者将接收到的json格式的数据解析成Java对象进行后续的处理。因此,实现Java类与json格式之间的转换是非常必要的。 2. 实现步骤 Java中…

    C 2023年5月23日
    00
  • 电脑开机时弹出:无法打开C:\\boot.ini文件.无法更改操作系统的解决方法

    问题描述 在电脑开机时,可能会出现类似以下错误提示: 无法打开C:\boot.ini文件。请检查您的电脑硬盘驱动器是否正常。 无法更改操作系统。 这种错误提示通常是由于引导文件(boot.ini文件)损坏或删除导致的。本文将为您提供修复此问题的完整攻略。 解决方法 以下是修复此问题的两种方法,您可以根据实际情况选择其中一种方法。 方法一:使用Windows系…

    C 2023年5月24日
    00
  • Java求最小生成树的两种算法详解

    Java求最小生成树的两种算法详解 概述 最小生成树(Minimum Spanning Tree)是指在一张连通的、有权图中找到一棵权值和最小的生成树,它是一些算法的子问题,常用于解决带权无向图的问题。常见的最小生成树算法有Prim算法和Kruskal算法,本文将详细讲解这两种算法的实现原理及其Java代码实现。 Prim算法 Prim算法是一种贪心算法,通…

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