
c++标准库基础
文章平均质量分 77
介绍c++标准库的基本用法
Lucy_stone
这个作者很懒,什么都没留下…
展开
-
c++标准库基础
这个系列介绍c++标准库的基本使用,文章只涉及如何使用c++标准库提供的语法和接口,对其原理和实现不做深究。原创 2024-01-06 16:38:24 · 386 阅读 · 1 评论 -
并发支持库(7)-闩锁和屏障
闩锁和屏障提供了一种同步方式,可以让一个或者多个阻塞,直到计数器减少至零。原创 2024-09-27 10:34:37 · 339 阅读 · 0 评论 -
并发支持库(6)-信号量
信号量是c++提供的一种同步机制,允许一定数量的线程同时访问资源。原创 2024-09-27 10:34:10 · 295 阅读 · 0 评论 -
并发支持库(5)-future
std::future是c++种的一个模板类,它提供了一种方式来异步获取一个操作的结果。std::future通常配合std::promise、std::packaged_task、std::async使用。原创 2024-03-13 20:07:04 · 428 阅读 · 0 评论 -
并发支持库(4)-条件变量
条件变量允许多个线程之间的交流。它可以阻塞某个线程,直到另一个线程的提醒再继续,这是通过关联一个互斥体来实现的。原创 2024-03-13 20:06:25 · 411 阅读 · 0 评论 -
并发支持库(3)-互斥
互斥可以对操作集合上锁,避免多个线程同时访问共享资源。这些操作集合可以看作是一次原子操作。原创 2024-03-12 22:04:50 · 937 阅读 · 0 评论 -
并发支持库(2)-原子操作
c++中的原子用于实现对象的线程安全的操作,避免数据竞争,每一个原子操作可以看作一个不可分割地整体。原创 2024-03-10 19:42:45 · 978 阅读 · 0 评论 -
并发支持库(1)-线程
线程允许多个程序任务在统一时间执行,不同的线程可以共享内存空间,每个线程也有自己的栈空间。原创 2024-03-07 22:34:42 · 984 阅读 · 0 评论 -
容器库(17)-std::span
span提供了对连续对象序列的视图,它是一个轻量级的、非拥有式的类模板。原创 2024-02-28 22:30:46 · 755 阅读 · 0 评论 -
容器库(16)-std::priority_queue
std::priority_queue是一种容器适配器,它内部的元素是按顺序排列的,默认情况下最大元素总是在队列顶部。可以自定义Compare来改变元素的排列顺序。原创 2024-02-27 20:57:56 · 695 阅读 · 0 评论 -
容器库(15)-std::queue
std::queue是一种容器适配器,它通过包装顺序容器来实现队列(先进先出)的数据结构。原创 2024-02-27 20:57:32 · 450 阅读 · 0 评论 -
容器库(14)-std::stack
std::stack是一种容器适配器,它通过包装顺序容器来实现栈(先进后出)的数据结构。原创 2024-02-27 20:56:31 · 390 阅读 · 0 评论 -
容器库(13)-std::unordered_multimap
unordered_multimap是含有键值对的无序关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_multimap在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。和unordered_map不同的是,unordered_multimap中的key值可以重复。原创 2024-02-26 23:05:52 · 1012 阅读 · 0 评论 -
容器库(12)-std::unordered_multiset
unordered_multiset是以key为元素无序的关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_multiset在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。和unordered_set不同的是,unordered_multiset中的key值可以重复。原创 2024-02-26 23:05:23 · 1109 阅读 · 0 评论 -
容器库(11)-std::unordered_map
unordered_map是含有唯一key的键值对的无序关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_map在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。原创 2024-02-25 21:11:40 · 1272 阅读 · 0 评论 -
容器库(10)-std::unordered_set
unordered_set是以key为元素无序的关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_set在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。原创 2024-02-21 20:59:50 · 1059 阅读 · 0 评论 -
容器库(9)-std::multimap
std::multimap是一种关联容器,包含键值对的已排序的列表。和std::map不同的是,std::multimap允许重复的key值。搜索、移除和插入操作具有对数复杂度。原创 2024-02-20 21:34:48 · 1151 阅读 · 0 评论 -
容器库(8)-std::multiset
std::multiset是以key为元素的有序关联容器,和std::set不同的是,std::multiset中的key可以重复。原创 2024-02-19 21:41:22 · 944 阅读 · 0 评论 -
容器库(7)-std::map
std::map是一种有序关联容器,它包含具有唯一键的键值对。原创 2024-02-19 21:05:15 · 1131 阅读 · 1 评论 -
容器库(6)-std::set
std::set是以key为元素的关联容器,容器中的key是唯一的且按顺序排列的。原创 2024-02-08 17:43:27 · 882 阅读 · 0 评论 -
容器库(5)-std::list
std::forward_list是可以从任何位置快速插入和移除元素的容器,不支持快速随机访问,支持正向和反向的迭代。原创 2024-02-07 14:53:16 · 2333 阅读 · 1 评论 -
容器库(4)-std::forward_list
std::forward_list是可以从任何位置快速插入和移除元素的容器,不支持快速随机访问,只支持正向迭代。原创 2024-02-06 19:32:36 · 2340 阅读 · 1 评论 -
容器库(3)-std::deque
std::deque是有索引的序列容器,它允许在它的首尾两端快速插入及删除元素,和vector不同的是,deque底层的内存不是连续的。原创 2024-02-04 23:38:34 · 1023 阅读 · 1 评论 -
容器库(2)-std::vector
std::vector管理的是动态分配的数组,可以在运行时添加和删除元素。vector管理的底层内存是连续的,当添加元素时没有剩余容量时,vector会重新申请一片新的合适大小的连续内存。原创 2024-01-31 19:17:48 · 1128 阅读 · 0 评论 -
容器库(1)-std::array
std::array是封装固定大小数组的容器,其大小在编译期就决定了,在运行时不可再更改。原创 2024-01-31 11:03:18 · 617 阅读 · 0 评论 -
字符串库(2)-std::basic_string_view
basic_string_view提供对字符串的只读访问,它并不占有对字符串的所有权,提供对字符串轻量和安全的访问。从实现上来说,basic_string_view只包含指向字符串的指针以及字符串的大小。原创 2024-01-26 14:53:05 · 1098 阅读 · 1 评论 -
字符串库(1)-std::basic_string
std::basic_string是为操作任何字符类型的字符串设计的模板类原创 2024-01-25 14:41:44 · 1556 阅读 · 0 评论 -
日期时间库(4)-C风格的日期和时间工具
C风格的日期和时间工具原创 2024-01-11 14:31:22 · 574 阅读 · 0 评论 -
日期时间库(3)-时钟
时钟由时间起点和计次频率组成,c++中定义了system_clock、steady_clock、high_resolution_clock、utc_clock、tai_clock、gps_clock、file_clock、local_t等时钟。原创 2024-01-10 16:34:12 · 485 阅读 · 0 评论 -
日期时间库(2)-时间点
时间点是特定时钟的纪元开始经过的时间时长。原创 2024-01-10 14:07:29 · 505 阅读 · 0 评论 -
日期时间库(1)-时长
类模版std::chrono::duration表示时间间隔,它由Rep类型的计次数和计次周期组成,其中计次周期是一个编译期有理数,表示从一个计次到下一个计次的秒数。Rep可以是整数类型,也可以是浮点数类型。原创 2024-01-09 17:12:07 · 400 阅读 · 0 评论 -
元编程库-编译期有理数
类模板std::ratio及相关的模板提供编译期有理数算术支持原创 2024-01-07 21:34:47 · 448 阅读 · 1 评论 -
智能指针weak_ptr
智能指针weak_ptr对shared_ptr管理的对象存在弱引用,即weak_ptr并不会增加引用对象的引用计数。weak_ptr是对shared_ptr的一种"观察",可以检查shared_ptr管理对象的是否被删除以及引用计数等,但是weak_ptr不能直接使用引用的对象,需要使用lock接口创建其引用对象的shared_ptr。原创 2024-01-06 17:08:37 · 426 阅读 · 1 评论 -
智能指针unique_ptr
unique_ptr通过指针占有并管理另一个对象(主要负责管理对象的销毁,或者说生命周期)。当unique_ptr被销毁时或者给unique_ptr赋值另一个对象的指针时,unique_ptr将删除原来管理的对象。unique_ptr可以管理单个对象,也可以管理动态分配的对象数组。unique_ptr类满足可移动构造以及可移动赋值,但是不满足可复制构造和可复制赋值的要求。原创 2024-01-05 21:41:40 · 950 阅读 · 0 评论 -
智能指针shared_ptr
shared_ptr是通过指针保持对象共享所有权的智能指针。shared_ptr保存所管理对象的引用计数,当引用计数变为0时,对象将被删除。shared_ptr可以管理单个对象,也可以管理动态分配的对象数组。shared_ptr满足可复制构造、可复制赋值、可移动构造以及可移动赋值的要求。原创 2024-01-06 15:47:04 · 1080 阅读 · 0 评论