📜  在C++中使用STL处理数组和向量(1)

📅  最后修改于: 2023-12-03 15:23:22.575000             🧑  作者: Mango

在C++中使用STL处理数组和向量

在C++中,STL(标准模板库)是一个强大的工具箱,可以大大简化程序员的工作。STL包含许多容器,其中包括使用数组和向量来存储数据的两个常用容器。下面将介绍如何使用STL处理数组和向量。

数组
声明和初始化数组

在STL中,可以使用array容器来处理数组。array容器是一个固定大小的数组。以下是声明和初始化一个长度为5的array的示例:

#include <array>
#include <iostream>

int main() {
    std::array<int, 5> myArray{ 1, 2, 3, 4, 5 };

    for (int i = 0; i < 5; i++) {
        std::cout << myArray[i] << " ";
    }

    return 0;
}

在上面的示例中,我们声明了一个长度为5的array,并将其初始化为{ 1, 2, 3, 4, 5 }。我们使用一个简单的for循环来打印每个数组元素。

数组的迭代器

STL提供了许多称为迭代器的工具,可以简化对容器中元素的访问。以下是使用array迭代器的示例:

#include <array>
#include <iostream>

int main() {
    std::array<int, 5> myArray{ 1, 2, 3, 4, 5 };

    for (auto it = myArray.begin(); it != myArray.end(); it++) {
        std::cout << *it << " ";
    }

    return 0;
}

在上面的示例中,我们使用begin()end()函数返回一个迭代器指向容器的第一个元素和最后一个元素之后的元素。我们使用一个for循环遍历数组,并使用*运算符来打印每个元素。

数组的常用函数

STL提供了许多函数来处理数组。以下是一些常用函数的示例:

#include <array>
#include <algorithm>
#include <iostream>

int main() {
    std::array<int, 5> myArray{ 5, 3, 1, 4, 2 };

    std::sort(myArray.begin(), myArray.end()); // 排序

    std::cout << "Min: " << *std::min_element(myArray.begin(), myArray.end()) << std::endl; // 最小值
    std::cout << "Max: " << *std::max_element(myArray.begin(), myArray.end()) << std::endl; // 最大值

    std::cout << "Sum: " << std::accumulate(myArray.begin(), myArray.end(), 0) << std::endl; // 求和

    return 0;
}

在上面的示例中,我们首先使用std::sort函数对数组进行排序。然后,我们使用std::min_elementstd::max_element函数来查找数组中的最小值和最大值。最后,我们使用std::accumulate函数来计算数组的总和。

向量
声明和初始化向量

在STL中,可以使用vector容器来处理向量。vector容器是一个可变大小的数组。以下是声明和初始化一个长度为5的vector的示例:

#include <vector>
#include <iostream>

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

    for (int i = 0; i < 5; i++) {
        std::cout << myVector[i] << " ";
    }

    return 0;
}

在上面的示例中,我们声明了一个长度为5的vector,并将其初始化为{ 1, 2, 3, 4, 5 }。我们使用一个简单的for循环来打印每个向量元素。

向量的迭代器

与数组类似,向量也可以使用迭代器来访问元素。以下是使用vector迭代器的示例:

#include <vector>
#include <iostream>

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

    for (auto it = myVector.begin(); it != myVector.end(); it++) {
        std::cout << *it << " ";
    }

    return 0;
}

在上面的示例中,我们使用begin()end()函数返回一个迭代器指向容器的第一个元素和最后一个元素之后的元素。我们使用一个for循环遍历向量,并使用*运算符来打印每个元素。

向量的常用函数

STL提供了许多函数来处理向量。以下是一些常用函数的示例:

#include <vector>
#include <algorithm>
#include <iostream>

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

    std::sort(myVector.begin(), myVector.end()); // 排序

    std::cout << "Min: " << *std::min_element(myVector.begin(), myVector.end()) << std::endl; // 最小值
    std::cout << "Max: " << *std::max_element(myVector.begin(), myVector.end()) << std::endl; // 最大值

    std::cout << "Sum: " << std::accumulate(myVector.begin(), myVector.end(), 0) << std::endl; // 求和

    return 0;
}

在上面的示例中,我们首先使用std::sort函数对向量进行排序。然后,我们使用std::min_elementstd::max_element函数来查找向量中的最小值和最大值。最后,我们使用std::accumulate函数来计算向量的总和。

结论

使用STL处理数组和向量可以大大简化程序员的工作,并提供许多方便的函数和迭代器。在使用STL时,请确保查看相关文档以了解可用的函数和工具。