关于vector的常见用法详解

关于vector的常见用法详解

简介

C++ STL提供了许多数据结构,其中vector是其中一个常用的容器。vector是一个动态可变数组,其大小可以在运行时改变。其背后实现的机制是使用数组来实现,同时使用一个整数来记录当前的容器大小。

常见用法

创建vector

我们可以使用以下方式来创建一个vector容器:

#include <vector>
using namespace std;

vector<int> v; // 创建一个空的整型vector
vector<string> str_vec(10); // 创建一个10个元素的字符串vector,每个元素都是空字符串
vector<char> char_vec(5, 'a'); // 创建一个5个元素的字符vector,每个元素都是'a'

访问vector元素

vector是一个类似于数组的数据结构,我们可以使用索引来访问其中的元素。同时,我们也可以使用迭代器来遍历vector中的元素。下面是两种访问元素的方式:

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

int main() {
    vector<int> v {1, 2, 3, 4, 5};

    // 通过索引访问元素
    cout << v[0] << endl; // 输出1
    cout << v.at(2) << endl; // 输出3

    // 使用迭代器访问元素
    for (auto it = v.begin(); it != v.end(); it++) {
        cout << *it << " ";
    }
    cout << endl; // 输出1 2 3 4 5

    return 0;
}

向vector中添加或删除元素

vector提供了多个函数来操作其中的元素。下面是两个比较常用的函数:

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

int main() {
    vector<int> v {1, 2, 3};

    // 添加元素
    v.push_back(4); // 在vector的末尾添加4
    v.insert(v.begin() + 1, 5); // 在下标为1的位置添加5

    // 删除元素
    v.pop_back(); // 删除vector的末尾元素
    v.erase(v.begin() + 1); // 删除下标为1的元素

    // 输出vector中的元素
    for (auto it = v.begin(); it != v.end(); it++) {
        cout << *it << " ";
    }
    cout << endl; // 输出1 3 4

    return 0;
}

示例说明

示例1

下面是一个vector的示例,演示了如何创建、访问、添加和删除元素:

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

int main() {
    // 创建vector
    vector<int> v {1, 2, 3};

    // 访问元素
    cout << v[0] << endl; // 输出1
    cout << v.at(1) << endl; // 输出2

    // 添加元素
    v.push_back(4); // 在vector的末尾添加4
    v.insert(v.begin() + 1, 5); // 在下标为1的位置添加5

    // 删除元素
    v.pop_back(); // 删除vector的末尾元素
    v.erase(v.begin() + 1); // 删除下标为1的元素

    // 输出vector中的元素
    for (auto it = v.begin(); it != v.end(); it++) {
        cout << *it << " ";
    }
    cout << endl; // 输出1 3

    return 0;
}

示例2

下面是一个使用vector进行排序的示例:

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

int main() {
    // 创建vector
    vector<int> v {5, 3, 2, 4, 1};

    // 排序
    sort(v.begin(), v.end());

    // 输出vector中的元素
    for (auto it = v.begin(); it != v.end(); it++) {
        cout << *it << " ";
    }
    cout << endl; // 输出1 2 3 4 5

    return 0;
}

结论

vector是C++ STL提供的一个常用的容器,其提供了多个函数用于操作其中的元素。我们可以使用索引或迭代器访问vector中的元素,也可以使用push_back、insert、pop_back、erase等函数来添加或删除元素。vector还提供了sort等算法函数,用于对其元素排序和查找。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于vector的常见用法详解 - Python技术站

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

相关文章

  • C 程序 使用递归查找数字的阶乘

    C程序 使用递归查找数字的阶乘 问题描述 给定一个正整数n,求n的阶乘,即$n! = n * (n-1) * (n-2) * … * 1$。使用递归方式实现阶乘的计算。 思路分析 递归计算阶乘是一个经典的问题,可以使用递归函数实现。具体思路可以分为两步: 判断递归结束的条件。在本问题中,当n等于1时,阶乘的值就是1 使用递归计算n-1的阶乘,然后再将结果…

    C 2023年5月9日
    00
  • JavaScript ES6解构运算符的理解和运用

    JavaScript ES6解构运算符的理解和运用 简介 ES6引入了解构运算符(destructuring assignment),该运算符提供了一种灵活且直观的方式来进行数组或对象的解构赋值,能够大大简化代码的书写和编写效率。本文将深入探讨ES6解构运算符的理解和运用。 数组解构 通过解构运算符可以将数组中的元素解构出来,并赋值给多个变量。下面是一个例子…

    C 2023年5月23日
    00
  • C#实现Nginx平滑加权轮询算法

    C#实现Nginx平滑加权轮询算法攻略 在介绍如何实现Nginx平滑加权轮询算法之前,我们需要先了解什么是加权轮询算法。加权轮询算法是一种常用的负载均衡算法,通过为不同的服务器设置不同的权重,使得处理能力强的服务器能够处理更多的请求。而Nginx平滑加权轮询算法则进一步优化了加权轮询算法,使得服务器能够更加平滑地处理请求,减少了负载均衡过程中的抖动。 基本思…

    C 2023年5月23日
    00
  • C++使用智能指针实现模板形式的单例类

    下面我将详细讲解使用智能指针实现模板形式的单例类的完整攻略。 1. 什么是智能指针? 智能指针是一个 C++ 类,它的实例行为类似于指针,不过它添加了自动内存回收的管理功能。智能指针中最常用的是 std::shared_ptr 和 std::unique_ptr。 我们使用智能指针可以避免内存泄漏和空悬指针,避免程序崩溃等问题。 2. 什么是模板形式的单例类…

    C 2023年5月23日
    00
  • C语言 strstr()函数

    当你需要在一个字符串中查找另一个字符串的时候,strstr()函数是一个非常有用的工具。它可以帮助你查找一个字符串中是否包含另一个指定的字符串,并返回匹配的位置。 语法 strstr()函数的语法如下: char* strstr(const char* str1, const char* str2); 该函数接受两个参数:str1和str2。str1是主字符…

    C 2023年5月9日
    00
  • VC List Control控件如何删除选中的记录实例详解

    删除VC List Control控件中选中的记录的过程可以通过以下步骤实现: 获取选中的记录索引:可以通过List Control控件的GetNextItem函数来获取选中的记录索引。该函数的参数可以用来指定搜索的起始索引。因此,我们可以在循环中使用该函数来获取所有选中的记录索引。 示例代码: int nItem = -1; while ((nItem =…

    C 2023年5月23日
    00
  • VC程序在Win32环境下动态链接库(DLL)编程原理

    VC程序在Win32环境下动态链接库(DLL)编程,主要原理是将一些可重复利用的函数和资源封装进动态链接库文件中,再由其他程序在需要时进行调用,从而提高代码重用性和程序的简洁性。以下是详细的攻略: 1. 创建DLL工程 首先,在VC中新建Win32 DLL工程,在“Win32 Application Wizard”对话框中选择“DLL”类型,之后通过向导一步…

    C 2023年5月23日
    00
  • 详解iOS通过ASIHTTPRequest提交JSON数据

    下面是详解iOS通过ASIHTTPRequest提交JSON数据的完整攻略: 1. 准备工作 在使用ASIHTTPRequest来提交JSON数据之前,需要先将ASIHTTPRequest集成到项目中。可以使用CocoaPods或手动下载并导入ASIHTTPRequest文件夹。 2. 导入ASIHTTPRequest头文件 在需要使用ASIHTTPRequ…

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