自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 并发支持库(5)-future

std::future是c++种的一个模板类,它提供了一种方式来异步获取一个操作的结果。std::future通常配合std::promise、std::packaged_task、std::async使用。

2024-03-13 20:07:04 362

原创 并发支持库(4)-条件变量

条件变量允许多个线程之间的交流。它可以阻塞某个线程,直到另一个线程的提醒再继续,这是通过关联一个互斥体来实现的。

2024-03-13 20:06:25 352

原创 并发支持库(3)-互斥

互斥可以对操作集合上锁,避免多个线程同时访问共享资源。这些操作集合可以看作是一次原子操作。

2024-03-12 22:04:50 860

原创 并发支持库(2)-原子操作

c++中的原子用于实现对象的线程安全的操作,避免数据竞争,每一个原子操作可以看作一个不可分割地整体。

2024-03-10 19:42:45 917

原创 并发支持库(1)-线程

线程允许多个程序任务在统一时间执行,不同的线程可以共享内存空间,每个线程也有自己的栈空间。

2024-03-07 22:34:42 931

原创 容器库(17)-std::span

span提供了对连续对象序列的视图,它是一个轻量级的、非拥有式的类模板。

2024-02-28 22:30:46 415

原创 容器库(16)-std::priority_queue

std::priority_queue是一种容器适配器,它内部的元素是按顺序排列的,默认情况下最大元素总是在队列顶部。可以自定义Compare来改变元素的排列顺序。

2024-02-27 20:57:56 371

原创 容器库(15)-std::queue

std::queue是一种容器适配器,它通过包装顺序容器来实现队列(先进先出)的数据结构。

2024-02-27 20:57:32 384

原创 容器库(14)-std::stack

std::stack是一种容器适配器,它通过包装顺序容器来实现栈(先进后出)的数据结构。

2024-02-27 20:56:31 334

原创 容器库(13)-std::unordered_multimap

unordered_multimap是含有键值对的无序关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_multimap在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。和unordered_map不同的是,unordered_multimap中的key值可以重复。

2024-02-26 23:05:52 887

原创 容器库(12)-std::unordered_multiset

unordered_multiset是以key为元素无序的关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_multiset在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。和unordered_set不同的是,unordered_multiset中的key值可以重复。

2024-02-26 23:05:23 951

原创 容器库(11)-std::unordered_map

unordered_map是含有唯一key的键值对的无序关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_map在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。

2024-02-25 21:11:40 1021

原创 容器库(10)-std::unordered_set

unordered_set是以key为元素无序的关联容器,搜索、移除和插入操作是平均常数的时间复杂度。unordered_set在内部没有按任何顺序排列,而是放在桶当中的,放进哪个桶是通过计算key的hash值来决定的。

2024-02-21 20:59:50 776

原创 容器库(9)-std::multimap

std::multimap是一种关联容器,包含键值对的已排序的列表。和std::map不同的是,std::multimap允许重复的key值。搜索、移除和插入操作具有对数复杂度。

2024-02-20 21:34:48 925

原创 容器库(8)-std::multiset

std::multiset是以key为元素的有序关联容器,和std::set不同的是,std::multiset中的key可以重复。

2024-02-19 21:41:22 793

原创 容器库(7)-std::map

std::map是一种有序关联容器,它包含具有唯一键的键值对。

2024-02-19 21:05:15 907 1

原创 容器库(6)-std::set

std::set是以key为元素的关联容器,容器中的key是唯一的且按顺序排列的。

2024-02-08 17:43:27 782

原创 容器库(5)-std::list

std::forward_list是可以从任何位置快速插入和移除元素的容器,不支持快速随机访问,支持正向和反向的迭代。

2024-02-07 14:53:16 2266 1

原创 容器库(4)-std::forward_list

std::forward_list是可以从任何位置快速插入和移除元素的容器,不支持快速随机访问,只支持正向迭代。

2024-02-06 19:32:36 2222 1

原创 容器库(3)-std::deque

std::deque是有索引的序列容器,它允许在它的首尾两端快速插入及删除元素,和vector不同的是,deque底层的内存不是连续的。

2024-02-04 23:38:34 797 1

原创 容器库(2)-std::vector

std::vector管理的是动态分配的数组,可以在运行时添加和删除元素。vector管理的底层内存是连续的,当添加元素时没有剩余容量时,vector会重新申请一片新的合适大小的连续内存。

2024-01-31 19:17:48 971

原创 容器库(1)-std::array

std::array是封装固定大小数组的容器,其大小在编译期就决定了,在运行时不可再更改。

2024-01-31 11:03:18 484

原创 字符串库(2)-std::basic_string_view

basic_string_view提供对字符串的只读访问,它并不占有对字符串的所有权,提供对字符串轻量和安全的访问。从实现上来说,basic_string_view只包含指向字符串的指针以及字符串的大小。

2024-01-26 14:53:05 904 1

原创 字符串库(1)-std::basic_string

std::basic_string是为操作任何字符类型的字符串设计的模板类

2024-01-25 14:41:44 1088

原创 日期时间库(4)-C风格的日期和时间工具

C风格的日期和时间工具

2024-01-11 14:31:22 472

原创 日期时间库(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 433

原创 日期时间库(2)-时间点

时间点是特定时钟的纪元开始经过的时间时长。

2024-01-10 14:07:29 449

原创 日期时间库(1)-时长

类模版std::chrono::duration表示时间间隔,它由Rep类型的计次数和计次周期组成,其中计次周期是一个编译期有理数,表示从一个计次到下一个计次的秒数。Rep可以是整数类型,也可以是浮点数类型。

2024-01-09 17:12:07 340

原创 元编程库-编译期有理数

类模板std::ratio及相关的模板提供编译期有理数算术支持

2024-01-07 21:34:47 389 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 345 1

原创 c++标准库基础

这个系列介绍c++标准库的基本使用,文章只涉及如何使用c++标准库提供的语法和接口,对其原理和实现不做深究。

2024-01-06 16:38:24 343 1

原创 智能指针shared_ptr

shared_ptr是通过指针保持对象共享所有权的智能指针。shared_ptr保存所管理对象的引用计数,当引用计数变为0时,对象将被删除。shared_ptr可以管理单个对象,也可以管理动态分配的对象数组。shared_ptr满足可复制构造、可复制赋值、可移动构造以及可移动赋值的要求。

2024-01-06 15:47:04 965

原创 智能指针unique_ptr

unique_ptr通过指针占有并管理另一个对象(主要负责管理对象的销毁,或者说生命周期)。当unique_ptr被销毁时或者给unique_ptr赋值另一个对象的指针时,unique_ptr将删除原来管理的对象。unique_ptr可以管理单个对象,也可以管理动态分配的对象数组。unique_ptr类满足可移动构造以及可移动赋值,但是不满足可复制构造和可复制赋值的要求。

2024-01-05 21:41:40 841

原创 使用clang-format格式化c++代码

clang-format是一个可以格式化代码的工具,本文将介绍如何在命令行中使用clang-format来格式化c++代码,然后会给出一种在c++工程中利用脚本来格式化所有c++文件的工作流程,最后将介绍clang-format中的配置字段,根据自定义的配置字段可以创建自己的代码格式风格。我们可以通过修改.clang-format文件中的字段来实现自己的代码风格,可参考clang-format的官方文档:本节内容基于clang-format 17。

2023-12-30 22:10:33 2228

原创 spdlog 简要解析

spdlog 是一个 c++ 日志库,支持同步异步日志、多线程日志、日志格式配置、多种对端输出等功能,这篇文章对 spdlog 的源码做一个简单的梳理,主要介绍 spdlog 打印日志的流程。

2023-11-08 22:14:12 671 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除