c++ vector如何使用 c++ vector方法攻略教程总结

下面是关于c++ vector的使用攻略总结:

c++ vector如何使用

什么是c++ vector

在c++中,vector是STL中提供的一种动态数组容器。vector可以在运行时自由增加或减少其元素数量,具有以下特点:

  • 支持随机访问

  • 内存位置连续

  • 支持快速插入和删除元素

  • 支持在尾部添加元素

vector的基本操作

声明和初始化

声明vector需要使用向量模板类,使用时需要包含头文件。以下是声明和初始化vector的常用方式:

#include <vector>
using namespace std;

vector<int> v;  //声明一个int类型的vector v
vector<int> v1(5); //声明一个初始大小为5的int类型的vector v1
vector<int> v2(5, 0); //声明一个初始大小为5且初始值均为0的int类型的vector v2
vector<int> v3{1, 2, 3, 4, 5}; //用初始列表初始化声明一个int类型的vector v3
vector<int> v4(v3); //声明一个和v3一样的int类型的vector v4

增加元素

使用push_back()函数可以在vector的尾部添加元素。以下是增加元素的示例:

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

删除元素

使用erase()函数可以在vector中删除一个元素或者一段元素。以下是删除元素的示例:

vector<int> v{1, 2, 3, 4, 5};
v.erase(v.begin() + 2); //删除第3个元素,即3
v.erase(v.begin() + 1, v.end() - 1); //删除第2到第4个元素,即2、4

修改元素

vector支持随机访问,可以使用下标运算符或at()函数访问指定位置的元素。以下是修改元素的示例:

vector<int> v{1, 2, 3, 4, 5};
v[2] = 10; //将第3个元素修改为10
v.at(4) = 20; //将第5个元素修改为20

访问元素

vector支持随机访问,可以使用下标运算符或at()函数访问指定位置的元素。以下是访问元素的示例:

vector<int> v{1, 2, 3, 4, 5};
int a = v[2]; //访问第3个元素,即3
int b = v.at(4); //访问第5个元素,即5

vector的高级用法

迭代器

迭代器是STL中的一种通用访问方式,vector也可以使用迭代器访问其中的元素。以下是使用迭代器访问vector中元素的示例:

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

操作符重载

尽管vector是一个模板类,但是它同样可以支持操作符重载。以下是实现vector加法操作的示例:

vector<int> operator +(const vector<int>& v1, const vector<int>& v2) {
    vector<int> res;
    int n = v1.size();
    for (int i = 0; i < n; i++) {
        res.push_back(v1[i] + v2[i]);
    }
    return res;
}

int main() {
    vector<int> v1{1, 2, 3};
    vector<int> v2{4, 5, 6};
    vector<int> v3 = v1 + v2;
    for (int i = 0; i < v3.size(); i++) {
        cout << v3[i] << " "; //输出7 9 11
    }
    return 0;
}

以上是关于c++ vector的使用攻略总结,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++ vector如何使用 c++ vector方法攻略教程总结 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • this.$router.push不跳转设定页面

    在Vue.js中,使用this.$router.push方法可以实现路由跳转。但是,有时候可能会出现this.$router.push不跳转设定页面的问题。以下是一个完整攻略,介了解决this.$router.push不跳转设定页面的方法: 步骤1:检查路由配置 要使用this.$router.push方法进行路由跳转,必须首先在路由配置中定义路由。如果路由…

    other 2023年5月6日
    00
  • 如何修改自己的电脑子网掩码、网关、IP/DNS地址?

    如何修改电脑的子网掩码、网关、IP/DNS地址 在修改电脑的子网掩码、网关、IP/DNS地址之前,请确保您具有管理员权限。以下是修改这些设置的步骤: 1. 打开网络设置 首先,打开控制面板或系统设置,然后选择“网络和互联网”选项。 2. 进入网络适配器设置 在“网络和互联网”选项中,找到并点击“网络和共享中心”链接。在新窗口中,您将看到当前连接的网络名称,旁…

    other 2023年7月30日
    00
  • js删除数组中指定元素的几种方式

    JS删除数组中指定元素的几种方式 在JavaScript中,删除数组中特定元素有多种方法,本文将详细介绍这些方法。 方法一:使用splice()方法 splice()方法可以删除数组中指定位置(索引)的元素,并返回已删除元素的数组。 语法: arr.splice(start, deleteCount, item1, item2, …) 参数: start…

    other 2023年6月25日
    00
  • Vue中的无限加载vue-infinite-loading的方法

    下面是“Vue中的无限加载vue-infinite-loading的方法”的完整攻略: 简介 vue-infinite-loading 是一个 Vue.js 的插件,它可以让你实现无限滚动加载功能。在处理大量数据时非常有用,可以将服务器的压力和前端渲染的压力都分散开。 安装 我们可以使用 npm 或 yarn 安装 vue-infinite-loading:…

    other 2023年6月25日
    00
  • MySQL分区字段列有必要再单独建索引吗?

    MySQL的分区表可以将大表拆分成管理更加简单的小表,从而提高查询效率。但是在创建MySQL分区表时,有一个问题需要考虑:分区字段列是否需要再单独建索引? 在MySQL分区表中,分区字段列的作用是将数据存储到相应分区中,因此查询时会自动锁定相应的分区,避免了全表扫描,从而提高查询效率。但是,如果分区字段列没有建立索引,MySQL就需要在每个分区中扫描所有数据…

    other 2023年6月25日
    00
  • Servlet从入门到精通(超级详细!)

    Servlet从入门到精通(超级详细!)攻略 什么是Servlet? Servlet(Server Applet)是运行在Web服务器或应用服务器上的程序,用于扩展服务器功能。Servlet的运行是由Servlet容器负责的,Servlet容器负责将请求和响应封装成ServletRequest和ServletResponse,并将它们传递给Servlet进行…

    other 2023年6月27日
    00
  • Python还能这么玩之用Python修改了班花的开机密码

    下面是用Python修改班花的开机密码的完整攻略: 一、准备工作 首先需要一个能够编辑Python代码的文本编辑器,比如VS Code、Sublime、PyCharm等。 班花电脑需要开启管理员权限。 需要安装Python,建议安装Python3版本。 二、获取管理员权限 因为我们需要修改班花的开机密码,所以需要获取管理员权限。可以通过创建一个名为”cmd-…

    other 2023年6月27日
    00
  • VB6.0中CommonDialog控件怎么添加使用?

    下面是VB6.0中添加和使用CommonDialog控件的完整攻略,包含以下几步: 第一步:在VB6.0中添加CommonDialog控件 打开VB6.0 IDE,打开你的工程(或者新建一个工程)。 点击工具箱中的“组件”按钮。 在弹出的“组件”对话框中勾选“Microsoft Common Dialog Control 6.0”,点击“应用”按钮。 点击“…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部