深入了解vector c

一、vector c的简介

vector c是一种动态数组,可以自动调整大小,并且支持常数时间的随机访问。它是C++标准模板库中的一部分,可以通过#include <vector>引入。

使用vector c的好处在于,它可以自动管理内存,而且可以像普通数组一样使用下标来访问元素,减少了工作量。

下面是示例代码:

#include <vector>
using namespace std;

int main() {
    vector<int> arr;
    arr.push_back(1);
    arr.push_back(2);
    arr.push_back(3);
    for (int i = 0; i < arr.size(); i++) {
        cout << arr[i] << endl;
    }
    return 0;
}

二、vector c的声明和初始化

声明vector c的语法如下:

vector<type> name;

其中,type是vector c中元素的类型,可以是任意类型的数据,name是vector c的变量名。

vector c的初始化方法有很多种,下面是几个常用的初始化方法:

方法1:通过列表初始化

vector<int> arr = {1, 2, 3};

方法2:通过拷贝构造函数初始化

vector<int> arr1 = {1, 2, 3};
vector<int> arr2(arr1);

方法3:通过指定元素个数和元素值进行初始化

vector<int> arr(3, 1); // 初始化为{1, 1, 1}

三、vector c的基本操作

1. 插入元素

在vector c中插入元素有两种方式:使用push_back()方法在末尾插入元素,使用insert()方法在指定位置插入元素。

示例代码如下:

vector<int> arr = {1, 2};
arr.push_back(3); // arr变为{1, 2, 3}
arr.insert(arr.begin(), 0); // 在开头插入元素0,arr变为{0, 1, 2, 3}

2. 删除元素

在vector c中删除元素也有两种方式:使用pop_back()方法删除末尾元素,使用erase()方法删除指定位置的元素。

示例代码如下:

vector<int> arr = {1, 2, 3};
arr.pop_back(); // arr变为{1, 2}
arr.erase(arr.begin()); // 删除第一个元素,arr变为{2}

3. 访问元素

在vector c中访问元素可以使用下标运算符[],也可以使用迭代器。

示例代码如下:

vector<int> arr = {1, 2, 3};
cout << arr[0] << endl; // 输出1
for (vector<int>::iterator it = arr.begin(); it != arr.end(); it++) {
    cout << *it << endl;
}

四、vector c的高级用法

1. 定义结构体类型的vector

在vector c中也可以存储结构体类型的元素,示例代码如下:

struct Person {
    string name;
    int age;
};
vector<Person> persons = {{"Tom", 18}, {"Jerry", 20}};

2. 排序vector

在vector c中可以使用sort()方法对vector进行排序,示例代码如下:

vector<int> arr = {3, 2, 1};
sort(arr.begin(), arr.end());

3. 判断vector是否包含某个元素

在vector c中可以使用find()方法来判断vector是否包含某个元素,示例代码如下:

vector<int> arr = {1, 2, 3};
if (find(arr.begin(), arr.end(), 2) != arr.end()) {
    cout << "2 is in the vector" << endl;
}

五、总结

以上是关于vector c的详细介绍和使用方法,使用vector c可以方便地实现动态数组的功能,并且减少了管理内存的工作量,建议大家多多尝试使用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/247177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:19
下一篇 2024-12-12 13:19

相关推荐

  • 深入解析Vue3 defineExpose

    Vue 3在开发过程中引入了新的API `defineExpose`。在以前的版本中,我们经常使用 `$attrs` 和` $listeners` 实现父组件与子组件之间的通信,但…

    编程 2025-04-25
  • 深入理解byte转int

    一、字节与比特 在讨论byte转int之前,我们需要了解字节和比特的概念。字节是计算机存储单位的一种,通常表示8个比特(bit),即1字节=8比特。比特是计算机中最小的数据单位,是…

    编程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什么是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一个内置小部件,它可以监测数据流(Stream)中数据的变…

    编程 2025-04-25
  • 深入探讨OpenCV版本

    OpenCV是一个用于计算机视觉应用程序的开源库。它是由英特尔公司创建的,现已由Willow Garage管理。OpenCV旨在提供一个易于使用的计算机视觉和机器学习基础架构,以实…

    编程 2025-04-25
  • 深入了解scala-maven-plugin

    一、简介 Scala-maven-plugin 是一个创造和管理 Scala 项目的maven插件,它可以自动生成基本项目结构、依赖配置、Scala文件等。使用它可以使我们专注于代…

    编程 2025-04-25
  • 深入了解LaTeX的脚注(latexfootnote)

    一、基本介绍 LaTeX作为一种排版软件,具有各种各样的功能,其中脚注(footnote)是一个十分重要的功能之一。在LaTeX中,脚注是用命令latexfootnote来实现的。…

    编程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r为前缀的字符串。r字符串中的反斜杠(\)不会被转义,而是被当作普通字符处理,这使得r字符串可以非常方便…

    编程 2025-04-25
  • 深入剖析MapStruct未生成实现类问题

    一、MapStruct简介 MapStruct是一个Java bean映射器,它通过注解和代码生成来在Java bean之间转换成本类代码,实现类型安全,简单而不失灵活。 作为一个…

    编程 2025-04-25
  • 深入了解Python包

    一、包的概念 Python中一个程序就是一个模块,而一个模块可以引入另一个模块,这样就形成了包。包就是有多个模块组成的一个大模块,也可以看做是一个文件夹。包可以有效地组织代码和数据…

    编程 2025-04-25
  • 深入探讨冯诺依曼原理

    一、原理概述 冯诺依曼原理,又称“存储程序控制原理”,是指计算机的程序和数据都存储在同一个存储器中,并且通过一个统一的总线来传输数据。这个原理的提出,是计算机科学发展中的重大进展,…

    编程 2025-04-25

发表回复

登录后才能评论