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

下面是 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日

相关文章

  • Vue slot插槽作用与原理深入讲解

    Vue Slot插槽作用与原理深入讲解 什么是Vue Slot插槽? 在Vue中,插槽(Slot)是一种特殊的语法,用于在组件中定义可插入内容的位置。它允许父组件向子组件传递内容,使得子组件可以根据需要展示不同的内容。 插槽的作用 插槽的作用是实现组件的灵活性和可复用性。通过插槽,我们可以将组件的部分内容交给父组件来定义,从而使得组件可以适应不同的使用场景。…

    other 2023年8月21日
    00
  • Ubuntu Apache配置以及cgi配置方法

    下面我来为您讲解Ubuntu Apache配置以及CGI配置方法的完整攻略。 Ubuntu Apache配置 安装Apache 1. 更新系统 sudo apt-get update 2. 安装Apache服务器 sudo apt-get install apache2 3. 启动Apache服务器 sudo systemctl start apache2 …

    other 2023年6月27日
    00
  • tomcat9与tomcat8区别

    以下是关于Tomcat9与Tomcat8区别的详细攻略: Tomcat9与Tomcat8区别 Tomcat9和Tomcat8是Apache Tomcat服务器的两个版本。虽然它们都是Java Servlet容,但它们之间存在一些区别。 以下是Tomcat9和Tomcat8之间的一些区别: 版本:Tomcat9Java 8或更高版本,而Tomcat8需要Jav…

    other 2023年5月7日
    00
  • java中循环遍历list有三种方式

    在Java中,循环遍历List有三种方式:for循环、增强for循环和迭代器。以下是这三种方式的详细说明和示例: 1. for循环 for循环是一种基本的循环结构,可以用于遍历List中的元素。以下是使用for循环遍历List的示例代码: List<String> list = new ArrayList<>(); list.add(…

    other 2023年5月7日
    00
  • 苹果 iOS 15.5/ iPadOS 15.5 开发者预览版 Beta 发布 (附更新内容大全)

    苹果 iOS 15.5/ iPadOS 15.5 开发者预览版 Beta 发布 (附更新内容大全)攻略 近日,苹果公司发布了 iOS 15.5/ iPadOS 15.5 开发者预览版 Beta,本篇攻略将会详细讲解这个更新内容的大全。 更新内容 以下是 iOS 15.5/ iPadOS 15.5 开发者预览版 Beta 的更新内容: 1. 网络中断问题修复 …

    other 2023年6月26日
    00
  • [Asp.Net Core]提高开发效率的方法

    提高开发效率的方法 在Asp.Net Core开发中,有一些方法可以帮助提高开发效率。下面是一些可以考虑的方法和示例说明: 1. 使用代码生成工具 代码生成工具可以帮助自动生成重复性的代码,减少手动编写的工作量。一个常用的代码生成工具是Scaffolding,它可以根据数据库模型自动生成控制器、视图和数据访问层代码。 示例说明: dotnet aspnet-…

    other 2023年7月27日
    00
  • 用JavaScript实现全局替换,解决$等特殊符号的难题[

    当然!下面是关于\”用JavaScript实现全局替换,解决$等特殊符号的难题\”的完整攻略: 用JavaScript实现全局替换,解决$等特殊符号的难题 JavaScript中的字符串替换可以使用正则表达式和replace方法来实现。以下是两个示例: 示例1:全局替换字符串中的特殊符号 let str = \"Hello $world$!\&qu…

    other 2023年8月19日
    00
  • python基础-变量运算符(3)

    Python基础-变量运算符(3) 在前面的文章中,我们已经介绍了Python中的变量和基本数据类型以及运算符。这篇文章将深入探讨Python中变量的本质和运算的内部机制。 变量的本质 在Python中,变量是一种标签或者说是指针,用于指向一个具体的对象。每个对象都拥有一个唯一的标识符、类型和值。当我们创建变量并赋值时,实际上是在为该变量标签指定一个对象,该…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部