当前位置: 首页 > news >正文

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

相关文章:

  • 系统的从零开始学习电子的相关知识,该如何规划?你是工作了18年的电子工程师,请给出你的建议
  • 【Linux】环境变量(图文)
  • learning ray之ray强化学习/超参调优和数据处理
  • ‌FunASR‌阿里开源的语音识别工具
  • 使用 ECharts GL 实现交互式 3D 饼图:技术解析与实践
  • WHAT - 冷启动和热启动
  • 屎上雕花系列-2nd
  • STL?vector!!!
  • 数据可视化大屏——物流大数据服务平台(二)
  • 2025年API安全防御全解析:应对DDoS与CC攻击的智能策略
  • 每天五分钟深度学习框架pytorch:视觉工具包torchvison
  • 什么是直播美颜SDK?跨平台安卓、iOS美颜SDK开发实战详解
  • 【递归,搜索与回溯算法篇】专题(一) - 递归
  • Python爬虫(22)Python爬虫进阶:Scrapy框架动态页面爬取与高效数据管道设计
  • 【官方题解】StarryCoding 入门教育赛 2 | acm | 蓝桥杯 | 新手入门
  • NLP基础
  • Java 23种设计模式 - 结构型模式7种
  • c++:迭代器(Iterator)
  • git相关
  • 今日行情明日机会——20250509
  • 警惕“全网最低价”等宣传,市监总局和中消协发布直播消费提示
  • 万达电影:股东杭州臻希拟减持不超1.3927%公司股份
  • 抗战回望20︱《山西省战区抗敌行政工作检讨会议议决案》:“强民政治”、“说服行政”
  • 外交部:中方和欧洲议会决定同步全面取消对相互交往的限制
  • 市场监管总局发布《城镇房屋租赁合同(示范文本)》
  • “两高”出台司法解释,严打破坏黑土地资源犯罪