主页 > 手机  > 

C++STL概览

C++STL概览
一、核心组成模块 1. 容器体系(Containers)

序列容器

vector:动态数组(随机访问O(1),尾部插入O(1))deque:双端队列(支持高效首尾插入)list:双向链表(任意位置插入O(1),但无随机访问)forward_list(C++11):单向链表(内存占用更小)

关联容器

map/set:红黑树实现的有序容器(查找O(logN))multimap/multiset:允许重复键值

无序容器(C++11)

unordered_map/unordered_set:哈希表实现(平均查找O(1))支持自定义哈希函数与等价谓词

容器适配器

stack:默认基于deque实现的后进先出结构queue:先进先出队列(可基于list优化)priority_queue:堆结构实现的最大优先级队列
2. 算法框架(Algorithms)

泛型算法设计

解耦数据与操作:通过迭代器接口统一访问容器典型算法: 排序:sort(快速排序)、stable_sort(归并排序)查找:find(线性搜索)、binary_search(二分查找)数值运算:accumulate(累加)、partial_sum(前缀和)

策略定制

支持自定义比较器(如greater<>改变排序顺序)谓词函数:find_if等算法可配合lambda表达式
3. 迭代器机制(Iterators)

类型体系

迭代器类型支持操作典型容器输入迭代器只读、单遍扫描istream_iterator输出迭代器只写、单遍扫描ostream_iterator前向迭代器多遍扫描forward_list双向迭代器支持--操作list/map随机访问迭代器支持+n跳转vector/array

迭代器适配器

reverse_iterator:逆向遍历容器insert_iterator:实现容器元素的批量插入
二、关键扩展组件 1. 函数对象与Lambda

函数对象(Functors)

struct Compare { bool operator()(int a, int b) const { return abs(a) < abs(b); } }; sort(v.begin(), v.end(), Compare());

Lambda表达式(C++11)

auto lambda = [threshold](int x) { return x > threshold; }; auto it = find_if(v.begin(), v.end(), lambda); 2. 智能指针体系(C++11)

unique_ptr

独占所有权模型,支持自定义删除器 auto ptr = std::make_unique<MyClass>(args);

shared_ptr

引用计数实现共享所有权weak_ptr解决循环引用问题 3. 字符串增强 string_view(C++17) 非拥有字符串视图,避免不必要的拷贝 void process(std::string_view sv) { // 可接受string、char[]等多种输入 }
三、系统级支持 1. 输入输出系统

流层次结构

高级特性

本地化支持(std::locale)格式化控制(std::format C++20) 2. 并发编程模型

线程管理

std::jthread worker([](std::stop_token st) { // C++20 while(!st.stop_requested()) { // 后台任务 } });

原子操作

std::atomic<int> counter{0}; counter.fetch_add(1, std::memory_order_relaxed); 3. 数值计算工具

随机数库(C++11)

std::mt19937 gen(std::random_device{}()); std::uniform_int_distribution<> dis(1, 6); int dice_roll = dis(gen);

复数运算

std::complex<double> z(2, 3); // 2+3i
四、现代演进方向

C++标准演进

版本关键特性C++11移动语义、lambda、智能指针C++17结构化绑定、并行算法C++20概念约束(Concepts)、协程C++23堆栈踪(stacktrace)、mdspan 设计哲学

泛型编程范式

通过模板实现算法与数据类型的完全解耦例:sort算法可处理任何支持<操作的类型

零开销原则

抽象不带来额外运行时开销(如vector与原生数组性能相当)

可扩展接口

允许用户自定义类型融入标准库生态(如实现迭代器接口与容器交互)

我们在努力扩大自己,以靠近,以触及我们自身以外的世界。 —博尔赫斯谈话录

标签:

C++STL概览由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++STL概览