📜  为 stl 导入的库 - C++ (1)

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

为 STL 导入的库 - C++

C++ 的 STL(Standard Template Library)是一个广泛使用的库,它包含了许多常用的数据结构和算法。然而,如果要使用 STL 中的某个特定部分,我们需要为其导入相关的库。

以下是一些常见的 STL 导入库:

  • #include <iostream> - 输入/输出流
  • #include <vector> - 动态数组
  • #include <list> - 链表
  • #include <map> - 关联数组
  • #include <algorithm> - 标准算法
  • #include <string> - 字符串处理
输入/输出流

输入/输出流库 iostream 提供了对标准输入输出的支持,其包括 cincoutcerrclog 等常用输出对象,可以使用 <<>> 等运算符对其进行操作。

#include <iostream>
using namespace std;

int main() {
    cout << "Hello, world!" << endl;
    int x;
    cin >> x;
    return 0;
}
动态数组

动态数组库 vector 实现了一个类似于数组的容器,支持动态增长和缩小。它的基本操作包括插入、删除、遍历等。

#include <vector>
using namespace std;

int main() {
    vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << endl;
    }
    return 0;
}
链表

链表库 list 实现了一个双向链表,支持插入、删除等操作。与动态数组相比,链表更适合处理频繁的元素操作。

#include <list>
using namespace std;

int main() {
    list<int> l;
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    for (list<int>::iterator it = l.begin(); it != l.end(); it++) {
        cout << *it << endl;
    }
    return 0;
}
关联数组

关联数组库 map 实现了一个类似于字典的容器,支持按键访问和插入。它的基本操作包括插入、删除、遍历等。

#include <map>
#include <string>
using namespace std;

int main() {
    map<string, int> m;
    m["Alice"] = 22;
    m["Bob"] = 18;
    m["Charlie"] = 27;
    for (map<string, int>::iterator it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}
标准算法

标准算法库 algorithm 提供了许多常见的算法,包括排序、查找、合并等。这些算法适用于各种容器类型,包括数组、链表、关联数组等。

#include <algorithm>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5};
    sort(v.begin(), v.end());
    for (int x : v) {
        cout << x << endl;
    }
    return 0;
}
字符串处理

字符串处理库 string 提供了对字符串的基本操作,包括子串提取、查找、替换等。它与动态数组类似,但是更加方便且安全。

#include <string>
using namespace std;

int main() {
    string s = "Hello, world!";
    cout << s.substr(0, 5) << endl; // "Hello"
    cout << s.find(",") << endl; // 5
    s.replace(7, 5, "you"); // "Hello, you!"
    cout << s << endl;
    return 0;
}