📜  C++标准模板库(STL)(1)

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

C++标准模板库(STL)

C++标准模板库(STL)是C++标准库的一个组成部分,它包含了一系列的容器,算法和迭代器等常用的数据结构和算法。STL是C++程序员必须掌握的一项重要技能,它可以大大提高程序员的开发效率和代码的质量。

容器

STL包含了多种容器,包括序列容器和关联容器。序列容器包括vector、deque、list、forward_list和array等,而关联容器包括set、multiset、map和multimap等。下面分别介绍其中的一些常用容器:

vector

vector是一种动态数组,它的容量可以随着元素的添加和删除而动态变化。vector支持快速随机访问,并且可以在末尾以常数时间添加或删除元素。以下是一个vector的简单示例:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v; // 定义一个空的vector

    v.push_back(1); // 在末尾添加一个元素
    v.push_back(2); // 在末尾添加一个元素
    v.push_back(3); // 在末尾添加一个元素

    for (int i = 0; i < v.size(); i++)
    {
        cout << v[i] << " "; // 输出元素
    }
    cout << endl;

    v.pop_back(); // 删除末尾的元素

    for (int i = 0; i < v.size(); i++)
    {
        cout << v[i] << " "; // 输出元素
    }
    cout << endl;

    return 0;
}
map

map是一种键值对的容器,它将一个键和一个值关联起来。map支持快速查找和插入,其内部实现是基于红黑树的。以下是一个map的简单示例:

#include <iostream>
#include <map>

using namespace std;

int main()
{
    map<string, int> m; // 定义一个空的map

    m["apple"] = 1; // 插入一个键值对
    m["banana"] = 2; // 插入一个键值对
    m["cherry"] = 3; // 插入一个键值对

    cout << m["apple"] << endl; // 查找一个键值对
    cout << m["banana"] << endl; // 查找一个键值对
    cout << m["cherry"] << endl; // 查找一个键值对

    return 0;
}
算法

STL包含了多种算法,如排序、查找、迭代、拷贝等。其中一些常用的算法包括sort、find、reverse和copy等。

sort

sort是一种快速排序算法,它可以对一个序列容器或者数组进行排序。以下是一个sort的简单示例:

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

using namespace std;

int main()
{
    vector<int> v = {3, 2, 1}; // 定义一个vector并初始化

    sort(v.begin(), v.end()); // 对vector进行排序

    for (int i = 0; i < v.size(); i++)
    {
        cout << v[i] << " "; // 输出元素
    }
    cout << endl;

    return 0;
}
find

find是一种线性查找算法,它可以在一个容器或者数组中查找一个元素。以下是一个find的简单示例:

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

using namespace std;

int main()
{
    vector<int> v = {1, 2, 3}; // 定义一个vector并初始化

    vector<int>::iterator iter = find(v.begin(), v.end(), 2); // 查找元素2

    if (iter != v.end())
    {
        cout << "Found " << *iter << endl; // 输出查找结果
    }
    else
    {
        cout << "Not found" << endl;
    }

    return 0;
}
迭代器

迭代器是STL的一个重要特性,它可以让程序员通过统一的接口访问容器中的元素。STL包含了多种类型的迭代器,如输入迭代器、输出迭代器、正向迭代器和反向迭代器等。以下是一个迭代器的简单示例:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = {1, 2, 3}; // 定义一个vector并初始化

    for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
    {
        cout << *iter << " "; // 输出元素
    }
    cout << endl;

    return 0;
}
总结

本文简单介绍了STL的容器、算法和迭代器等常用特性,这些特性在C++编程中非常常用。熟练掌握STL可以提高程序员的开发效率和代码质量,建议C++程序员花费足够的时间和精力学习。