C++之vector容器的的声明初始化和增删改查

yizhihongxing

下面是 C++ 中 vector 容器的声明、初始化、增删改查的完整攻略。

1. vector 容器的声明

vector 容器需要包含头文件 vector。声明 vector 对象时,需要指定存储元素的类型。

#include <vector>

// 声明存储int类型的vector对象
std::vector<int> vecInt;

// 声明存储string类型的vector对象
std::vector<std::string> vecStr;

2. vector 容器的初始化

vector 容器可以通过以下方式进行初始化:

2.1. 初始值列表

// 初始化存储int类型的vector对象
std::vector<int> vecInt = {1, 2, 3, 4, 5};

// 初始化存储string类型的vector对象
std::vector<std::string> vecStr = {"hello", "world"};

2.2. 重复值初始化

// 初始化存储int类型的vector对象,全部填充为3
std::vector<int> vecInt(5, 3);

// 初始化存储string类型的vector对象,全部填充为"hello"
std::vector<std::string> vecStr(10, "hello");

2.3. 复制初始化

// 初始化存储int类型的vector对象,使用其他int类型的vector对象初始化
std::vector<int> vecInt1 = {1, 2, 3, 4, 5};
std::vector<int> vecInt2(vecInt1);

// 通过拷贝赋值方式初始化存储int类型的vector对象
std::vector<int> vecInt3;
vecInt3 = vecInt1;

3. vector 容器的增删改查

3.1. 添加元素

3.1.1. push_back() 函数

使用 push_back() 函数向 vector 容器尾部添加元素。

std::vector<int> vecInt = {1, 2, 3};

// 添加元素4
vecInt.push_back(4);

3.1.2. insert() 函数

使用 insert() 函数在指定位置插入一个元素或一组元素。

std::vector<int> vecInt = {1, 2, 3};

// 在位置1插入元素4
vecInt.insert(vecInt.begin() + 1, 4);

// 在位置1插入元素4、5、6
vecInt.insert(vecInt.begin() + 1, {4, 5, 6});

3.2. 删除元素

3.2.1. pop_back() 函数

使用 pop_back() 函数从 vector 容器尾部删除一个元素。

std::vector<int> vecInt = {1, 2, 3};

// 删除尾部元素3
vecInt.pop_back();

3.2.2. erase() 函数

使用 erase() 函数从指定位置删除一个元素或一组元素。

std::vector<int> vecInt = {1, 2, 3};

// 删除位置1的元素
vecInt.erase(vecInt.begin() + 1);

// 删除位置1、2、3上的元素
vecInt.erase(vecInt.begin() + 1, vecInt.begin() + 4);

3.3. 修改元素

可以通过下标方式或迭代器方式对 vector 容器中的元素进行修改。

std::vector<int> vecInt = {1, 2, 3};

// 修改位置1上的元素为4
vecInt[1] = 4;

* (vecInt.begin() + 2) = 5;

3.4. 查询元素

3.4.1. 使用下标查询

使用下标方式查询 vector 容器中的元素。

std::vector<int> vecInt = {1, 2, 3};

// 查询位置1上的元素
int val = vecInt[1];

// 查询尾部元素
val = vecInt.back();

3.4.2. 使用迭代器查询

使用迭代器方式查询 vector 容器中的元素。

std::vector<int> vecInt = {1, 2, 3};

// 查询位置1上的元素
int val = *(vecInt.begin() + 1);

// 使用迭代器遍历元素
for (std::vector<int>::iterator it = vecInt.begin(); it != vecInt.end(); ++it) {
    std::cout << *it << std::endl;
}

示例一

#include <iostream>
#include <vector>

int main()
{
    // 初始化存储int类型的vector对象
    std::vector<int> vecInt = {1, 2, 3};

    // 添加元素4
    vecInt.push_back(4);

    // 删除尾部元素4
    vecInt.pop_back();

    // 在位置1插入元素5
    vecInt.insert(vecInt.begin() + 1, 5);

    // 修改位置1上的元素为6
    vecInt[1] = 6;

    // 查询位置1上的元素
    int val = vecInt[1];

    // 输出vector中所有元素
    for (std::vector<int>::iterator it = vecInt.begin(); it != vecInt.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:1 6 3

示例二

#include <iostream>
#include <vector>
#include <string>

int main()
{
    // 初始化存储string类型的vector对象
    std::vector<std::string> vecStr = {"hello", "world"};

    // 使用迭代器遍历元素
    for (std::vector<std::string>::iterator it = vecStr.begin(); it != vecStr.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    // 删除位置1上的元素
    vecStr.erase(vecStr.begin() + 1);

    // 在位置0插入元素"everyone"
    vecStr.insert(vecStr.begin(), "everyone");

    // 输出vector中所有元素
    for (std::vector<std::string>::iterator it = vecStr.begin(); it != vecStr.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:hello everyone

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++之vector容器的的声明初始化和增删改查 - Python技术站

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

相关文章

  • 5分钟快速安装redmine项目管理软件

    当然,我很乐意为您提供有关“5分钟快速安装Redmine项目管理软件”的完整攻略。以下是详细的步骤和两个示例: 1 安装Redmine 要安装Redmine,可以使用以下步骤: 安装必要的软件包 sudo apt-get update sudo apt-get install -y build-essential ruby ruby-dev libmysql…

    other 2023年5月6日
    00
  • React中的Hooks路由跳转问题

    React是一款流行的前端开发框架,而React路由则是其中十分重要的一部分。在React中常用的路由库是React Router,它提供了诸如BrowserRouter, HashRouter, Link, Route, Switch等组件和API。在React Router中通过编写路由组件,实现组件的切换和页面跳转。 Hooks是React新推出的一组…

    other 2023年6月27日
    00
  • 魔兽世界7.3.5野德怎么堆属性 wow7.35猫德配装属性优先级攻略

    魔兽世界7.3.5野德怎么堆属性 野德属性优先级 在魔兽世界7.3.5版本中,野德的属性优先级排序为:爆击 > 急速 > 狂暴值 > 精通 爆击:因为野德的流派技能和伤害都能受到爆击的影响,所以在野德的属性排序中需要将爆击放在第一位。 急速:野德的优化是依赖于技能循环来完成的,而急速可以加速技能的循环,减少空余时间,所以放在第二位。 狂暴值…

    other 2023年6月27日
    00
  • word怎么设置小型大写字母small capitals?

    要在Word中设置小型大写字母(small capitals),请按照以下步骤进行操作: 首先,打开Word文档并选择要应用小型大写字母的文本。 在顶部菜单栏中,找到并点击“字体”选项卡。 在弹出的字体对话框中,您将看到一个名为“字体效果”的下拉菜单。点击该下拉菜单。 在下拉菜单中,您将看到一个选项称为“小型大写字母”(Small Capitals)。选择该…

    other 2023年8月16日
    00
  • 如何改变placeholder的样式

    如何改变placeholder的样式 在Web开发中,placeholder 用于在输入框中展示默认提示内容,比如搜索框中的“请输入关键字”。默认情况下,placeholder 的样式和输入框的文本样式一致,如果想要将其样式修改为特殊样式,则需要对其进行单独的样式设置。 下面是一些方法: 1.使用 ::placeholder 伪元素 ::placeholde…

    其他 2023年3月28日
    00
  • idea64.exe.vmoptions文件如何设置调整VM配置文件

    关于如何设置调整idea64.exe.vmoptions文件的VM配置,可以按照以下步骤进行: 步骤1:打开Intellij IDEA软件,点击菜单栏中的“Help”选项,再选择“Edit Custom VM Options…”选项 步骤2:此时系统会默认打开idea64.exe.vmoptions文件,该文件中记录了Intellij IDEA的JVM配…

    other 2023年6月25日
    00
  • Vue.js自定义指令的用法与实例解析

    下面是Vue.js自定义指令的用法与实例解析的完整攻略。 自定义指令的概念 在Vue.js中,我们可以通过自定义指令来扩展Vue.js的功能。自定义指令实际上就是一个指令函数,它可以接收三个参数:el, binding, vnode。 其中,el表示指令所绑定的元素,binding是一个对象,包含指令的相关信息,vnode表示Vue编译生成的虚拟节点。 自定…

    other 2023年6月25日
    00
  • C#开发Winform实现窗体间相互传值

    下面是详细讲解“C#开发Winform实现窗体间相互传值”的完整攻略: 目录 背景与前置知识 方法一:通过构造函数传参 示例1:从FormA传递数据到FormB 示例2:从FormB传递数据到FormA 方法二:通过属性传参 示例1:从FormA传递数据到FormB 示例2:从FormB传递数据到FormA 总结 背景与前置知识 C#是一门流行的面向对象编程…

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