【C++】vector容器类

在C++中,vector是一个动态数组,它是标准模板库(STL)提供的一个容器类。

vector提供了一个可变大小的数组,可以在运行时根据需要自动调整大小。

要使用vector,需要包含<vector>头文件。以下是vector的一些常见用法和特性:

  1. 创建vector对象:
#include <vector>

int main() {
    // 创建一个空的vector
    std::vector<int> myVector;

    // 创建带有初始值的vector
    std::vector<int> myVector = {1, 2, 3, 4, 5};

    return 0;
}
  1. 添加元素到vector
#include <vector>

int main() {
    std::vector<int> myVector;

    // 添加单个元素
    myVector.push_back(10);

    // 添加多个元素
    myVector.push_back(20);
    myVector.push_back(30);

    return 0;
}
  1. 访问vector的元素:
#include <vector>
#include <iostream>

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};

    // 使用下标访问元素
    std::cout << myVector[0] << std::endl; // 输出:1

    // 循环遍历动态数组
	for (int i = 0 ; i < myVector.size(); i++) {
	    std::cout << myVector[i] << std::endl;
	}
    std::cout << std::endl;

    return 0;
}
  1. 获取vector的大小和清空vector
#include <vector>
#include <iostream>

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};

    // 获取vector的大小
    std::cout << "Size: " << myVector.size() << std::endl;

    // 清空vector
    myVector.clear();

    // 再次获取vector的大小
    std::cout << "Size: " << myVector.size() << std::endl;

    return 0;
}

vector还提供了其他许多功能,例如插入、删除、排序等操作。

补充:

vector<pair<string, int>> 是一个存储 pair 对象的动态数组,其中每个 pair 对象包含一个字符串和一个整数。以下是 vector<pair<string, int>> 的相关讲解:

  1. 创建 vector<pair<string, int>> 对象:
#include <vector>
#include <utility> 

int main() {
    // 创建一个空的 vector<pair<string, int>>
    std::vector<std::pair<std::string, int>> myVector;

    // 创建带有初始值的 vector<pair<string, int>>
    std::vector<std::pair<std::string, int>> myVector = {{"Alice", 25}, {"Bob", 30}};

    return 0;
}

注:#include <utility> 这个头文件提供了一些实用的工具函数和类,主要用于提供对通用操作的支持。

<utility> 头文件中包含了以下重要的内容:

  1. std::pair:用于存储两个不同类型的值,并提供了访问和操作这两个值的方法。
  2. std::make_pair:一个模板函数,用于方便地创建 pair 对象。

具体讲解:

pair 是一个标准库类型,用于存储两个不同类型的值。

std::make_pair 函数的语法如下:

template <class T1, class T2>
constexpr std::pair<T1, T2> make_pair(T1&& x, T2&& y);

该函数接受两个参数,分别是类型为 T1T2 的值。它返回一个 pair<T1, T2> 对象,其中包含这两个值。

使用 std::make_pair 的示例:

#include <utility> 
#include <iostream>

int main() {
    std::pair<std::string, int> myPair1 = std::make_pair("Alice", 25);
    std::pair<int, double> myPair2 = std::make_pair(42, 3.14);

    std::cout << myPair1.first << ": " << myPair1.second << std::endl; // 输出:Alice: 25
    std::cout << myPair2.first << ": " << myPair2.second << std::endl; // 输出:42: 3.14

    return 0;
}

在上面的示例中,使用 std::make_pair 创建了两个 pair 对象:myPair1myPair2。第一个 pair 包含一个字符串和一个整数,第二个 pair 包含一个整数和一个双精度浮点数。

使用 std::make_pair 有以下几个优点:

  • 不需要显式指定模板参数类型,编译器可以自动推断出类型。
  • 使用 std::make_pair 更加简洁和清晰,避免了手动指定模板参数类型的繁琐。

需要注意的是,std::make_pair 创建的 pair 对象是通过值传递的,而不是通过引用传递。如果需要传递引用类型的值,可以使用直接构造 pair 对象的方式。

  1. std::swap:用于交换两个对象的值。
  2. std::move:用于将对象转移所有权,通常与移动语义一起使用。
  3. std::forward:用于完美转发,通常与模板函数和右值引用一起使用。

除了上述功能,<utility> 头文件还提供了其他一些实用的工具函数和类,用于支持泛型编程和通用算法。通过包含 <utility> 头文件,可以使用其中定义的功能,简化代码的编写并提高代码的可读性和可维护性。

需要注意的是,<utility> 头文件通常被其他标准库头文件隐式包含,例如 <vector><map><algorithm> 等。因此,在使用这些头文件时,无需显式包含 <utility>。但是,如果只需要使用 <utility> 中的特定功能,可以单独包含它以避免不必要的头文件依赖。

  1. 添加元素到 vector<pair<string, int>>
#include <vector>
#include <utility> // for std::pair

int main() {
    std::vector<std::pair<std::string, int>> myVector;

    // 添加单个元素
    myVector.push_back(std::make_pair("Alice", 25));

    // 添加多个元素
    myVector.push_back(std::make_pair("Bob", 30));
    myVector.push_back(std::make_pair("Charlie", 35));

    return 0;
}
  1. 访问 vector<pair<string, int>> 的元素:
#include <vector>
#include <utility> // for std::pair
#include <iostream>

int main() {
    std::vector<std::pair<std::string, int>> myVector = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};

    // 使用下标访问元素
    std::cout << myVector[0].first << ": " << myVector[0].second << std::endl; // 输出:Alice: 25
    
    return 0;
}
  1. 获取 vector<pair<string, int>> 的大小和清空:
#include <vector>
#include <utility> // for std::pair
#include <iostream>

int main() {
    std::vector<std::pair<std::string, int>> myVector = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};

    // 获取 vector 的大小
    std::cout << "Size: " << myVector.size() << std::endl;

    // 清空 vector
    myVector.clear();

    // 再次获取 vector 的大小
    std::cout << "Size: " << myVector.size() << std::endl;

    return 0;
}

vector<pair<string, int>> 可以方便地存储键值对或相关的数据项,每个键值对由一个字符串和一个整数组成。通过 pair 对象,可以将两个不同类型的数据组合在一起,并将它们作为单个元素存储在 vector 中。可以根据需要对 vector<pair<string, int>> 进行插入、删除、排序等操作,并通过下标或迭代器访问其中的元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值