c++:库(Library)

目录

什么是库?

C++中库的两种形态:静态库 和 动态库

静态链接 vs 动态链接(链接 ≠ 库)

🔒 静态链接(Static Linking)

🔗 动态链接(Dynamic Linking)

C++标准库(Standard Library)

标准模板库 STL(Standard Template Library)

总结 & 结构图解 


什么是库?

库就是一堆 别人写好的代码打包好的文件,让你可以直接调用里面的函数或类,而不需要自己从零写。

举个例子:

你要排序一个数组,不必自己写冒泡排序或快排,只要用库函数:

#include <algorithm>
std::sort(array, array + n);

你就像用现成的“排序工具”,节省了造轮子的时间。

 

C++中库的两种形态:静态库动态库

类型后缀名(Windows)被使用时优点缺点
静态库.lib编译时嵌入程序无需额外依赖文件体积大、难更新
动态库.dll程序运行时加载程序更小,可共享更新运行时需要额外文件
Linux 下.a(静态)
.so(动态)

 

静态链接 vs 动态链接(链接 ≠ 库)

链接(Linking)是把你的代码和库的代码“拼装”成一个完整程序的过程。

🔒 静态链接(Static Linking)

  • 编译阶段,库的内容直接复制进你的程序

  • 程序编译后独立,无需外部依赖。

  • 缺点:程序体积大;库升级需要重新编译整个程序。

🔗 动态链接(Dynamic Linking)

  • 编译时只记录“我要用这个库”

  • 运行时才加载 .dll.so 文件

  • 缺点:程序运行依赖外部库,缺失会导致运行失败

 

C++标准库(Standard Library)

C++ 自带的“官方工具箱”,包括以下模块:

模块功能
<iostream>输入输出(cin, cout
<vector>, <list>常用容器
<algorithm>各种算法(排序、查找等)
<cmath>数学函数(sqrt, pow)
<functional>函数对象、回调

示例:

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

int main() {
    std::vector<int> v = {3, 1, 4};
    std::sort(v.begin(), v.end());
    for (int x : v) std::cout << x << " ";
}

标准模板库 STL(Standard Template Library)

STL 是 C++ 标准库的一个子集,包含这三大核心:

  1. 容器(Containers):装数据的

    vector, list, map, unordered_map, set
  2. 算法(Algorithms):对数据操作

    sort, find, count, accumulate
  3. 迭代器(Iterators):容器访问器

    它像“指针”,可以遍历任何容器

示例:

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

int main() {
    std::vector<int> nums = {5, 2, 9, 1};

    std::sort(nums.begin(), nums.end());  // 使用算法
    for (auto it = nums.begin(); it != nums.end(); ++it) {
        std::cout << *it << " ";          // 使用迭代器访问容器
    }
}

输出:1 2 5 9

  • vector 是容器

  • sort 是算法

  • begin() / end() 是迭代器

⛳ STL 的优势:

  • 模板化设计(泛型编程):适用于任何类型

  • 高性能实现:效率极高,工业级别

  • 统一接口:所有容器用法一致,降低学习成本

总结 & 结构图解 

                +----------------------+
                |   C++ Standard Lib   |
                +----------------------+
                    /     |      \
                   /      |       \
          +--------+  +----------+   +--------+
          | IO     |  |  STL     |   | Math   |
          +--------+  +----------+   +--------+
                           |
               +-----------+-----------+
               |           |           |
          Containers    Algorithms   Iterators

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值