C++STL教程之vector模板的使用

C++STL教程之vector模板的使用

什么是vector?

vector是C++标准库中的一种容器,可以看作是包含一组元素的动态数组。与C-style数组相比,vector有许多好处:

  • 可以动态调整数组大小,无需手动分配内存
  • 便于元素的插入和删除操作
  • 支持自动内存管理,避免内存泄漏等问题

在使用vector之前,需要引入头文件 #include<vector>

如何创建vector?

可以使用以下方式创建一个vector对象:

vector<int> v1;  // 创建一个int类型的空vector
vector<double> v2(10);  // 创建一个含有10个double类型元素的vector
vector<string> v3(5, "hello");  // 创建一个含有5个字符串"hello"的vector

如何访问vector中的元素?

可以使用下标运算符([])或迭代器来访问vector中的元素。例如:

vector<int> v1 = {1, 2, 3, 4, 5};
int x = v1[0];  // 访问第一个元素
int y = v1.at(1);  // 访问第二个元素
vector<int>::iterator it = v1.begin();  // 创建一个指向第一个元素的迭代器

如何修改vector中的元素?

可以使用下标运算符或迭代器来修改vector中的元素。例如:

vector<int> v1 = {1, 2, 3, 4, 5};
v1[0] = 10;  // 修改第一个元素的值
vector<int>::iterator it = v1.begin();
*it = 20;  // 修改第一个元素的值

如何在vector中添加元素?

可以使用push_back函数在vector的末尾添加一个元素。例如:

vector<int> v1 = {1, 2, 3};
v1.push_back(4);  // 在末尾添加一个元素4
v1.push_back(5);  // 在末尾添加一个元素5

如何在vector中删除元素?

可以使用pop_back函数删除vector末尾的元素,或使用erase函数删除指定位置或指定区间的元素。例如:

vector<int> v1 = {1, 2, 3, 4, 5};
v1.pop_back();  // 删除末尾的元素5
v1.erase(v1.begin() + 1);  // 删除第二个元素2
v1.erase(v1.begin() + 1, v1.begin() + 3);  // 删除第二个和第三个元素

示例一:使用vector实现栈

#include <iostream>
#include <vector>

using namespace std;

class Stack {
private:
    vector<int> v;
public:
    void push(int x) {
        v.push_back(x);
    }
    void pop() {
        v.pop_back();
    }
    int top() {
        return v.back();
    }
    bool empty() {
        return v.empty();
    }
};

int main() {
    Stack s;
    s.push(1);
    s.push(2);
    s.push(3);
    while (!s.empty()) {
        cout << s.top() << endl;
        s.pop();
    }
    return 0;
}

示例二:使用vector实现二分查找

#include <iostream>
#include <vector>

using namespace std;

int binary_search(vector<int>& v, int x) {
    int left = 0, right = v.size() - 1;
    while (left <= right) {
        int mid = (left + right) / 2;
        if (v[mid] == x) {
            return mid;
        } else if (v[mid] < x) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1;
}

int main() {
    vector<int> v = {1, 3, 5, 7, 9};
    int index = binary_search(v, 5);
    if (index == -1) {
        cout << "not found" << endl;
    } else {
        cout << "found at index " << index << endl;
    }
    return 0;
}

以上就是关于vector模板的使用的基本攻略,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++STL教程之vector模板的使用 - Python技术站

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

相关文章

  • C语言实现简单的抽奖系统

    下面是“C语言实现简单的抽奖系统”的完整攻略: 1. 设计思路 抽奖系统需要具备以下功能: 输入参加抽奖的人员名单。 随机抽取中奖者。 输出中奖者名单。 因此我们需要设计以下几个模块: 输入模块:获取所有参与抽奖的人名,并保存在数组中。 抽奖模块:使用随机数生成器,在参与抽奖的人员数组中随机选择一个中奖者。 输出模块:将中奖者的名字输出。 2. 代码实现 下…

    C 2023年5月23日
    00
  • Python学习之MRO方法搜索顺序

    Python学习之MRO方法搜索顺序 MRO方法(Method Resolution Order)是Python中解决多继承问题的一种算法,它用于确定继承类中方法的调用顺序。在Python中,当我们调用某个方法时,解释器会先从该对象的类中查找是否有该方法,如果没有,就从其父类中查找,依次往上查找,直到找到为止。 什么是MRO方法搜索顺序? 在Python中,…

    C 2023年5月23日
    00
  • OpenCV实现图像连通域

    下面是OpenCV实现图像连通域的完整攻略: 1. 简介 图像连通域是指一组具有相同像素值的像素的集合。在图像分割、形状识别等领域中,这是一个非常重要的概念。OpenCV提供了一些方法来计算图像中不同的连通域。在这篇文章中,我将向你展示如何用OpenCV实现图像连通域。 2. 实现步骤 OpenCV通过扫描整个图像,检测相邻像素值相同的像素,将这些像素标记为…

    C 2023年5月23日
    00
  • 详解c++20协程如何使用

    详解C++20协程如何使用 简介 C++20协程是C++20新特性之一,它提供了更加高效的异步编程模型。在C++20中,协程这个概念被引入了语言标准,对于需要高效异步编程的任务,使用协程可以更加便捷地完成。 本文主要介绍C++20协程的基本概念、使用方法以及示例代码。 协程概念 协程(Coroutine),也称为替代栈(Stackless)协程,是一种比线程…

    C 2023年5月22日
    00
  • 淘宝直播间进不去怎么回事?怎么做?

    淘宝直播间进不去怎么回事?怎么做? 淘宝直播是淘宝平台上的一项直播服务,为商家提供直播卖货的渠道,吸引了大量用户。但是,用户在使用淘宝直播时,有时遇到无法进入直播间的问题,接下来我们将为大家介绍如何解决。 一、检查网络连接 首先,我们需要检查一下自己的网络连接是否正常。可以打开其他网站试试看,如果其他网站打得开,那就是淘宝平台的问题,如果其他网站也打不开,那…

    C 2023年5月23日
    00
  • C语言用数组表示法传递一维数组

    当我们需要在函数之间传递一维数组时,可以使用指针或数组表示法。本篇攻略将详细讲解使用数组表示法传递一维数组。 什么是数组表示法? 数组是一组相同类型的元素序列,使用数组表示法是指用指针变量表示数组首元素的地址,通过指针地址访问数组中的元素。 一维数组的数组表示法格式 函数声明时,可以使用以下格式表示使用数组表示法传递一维数组: void function_n…

    C 2023年5月9日
    00
  • 整理AngularJS框架使用过程当中的一些性能优化要点

    当在使用AngularJS框架进行开发的过程中,需要注意性能优化,以避免应用程序出现延迟和卡顿现象。下面是整理AngularJS框架使用过程中的一些性能优化要点的攻略。 1. 使用一次性绑定语法 使用AngularJS的双向数据绑定特性时,会引发监听器的频繁触发,影响应用的性能。AngularJS推荐使用一次性绑定语法”{{::expression}}”,它…

    C 2023年5月22日
    00
  • Qt中JSON操作的具体使用

    下面是关于Qt中JSON操作的具体使用的完整攻略。 什么是JSON JSON是JavaScript Object Notation的缩写,是一种轻量级的数据交换格式。JSON 格式中采用了类似于JavaScript对象的键值对的方式,用于表示结构化的数据。JSON格式常用于数据交互,自然语言的表示,等等。 Qt中JSON操作的具体使用 Qt提供了QJsonD…

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