
C++ STL
文章平均质量分 64
逗神大人
C++程序员,也会点Java,Kotlin, Swift,Python,Golang, C#, 但技术相对比较菜,用到啥就学啥,用不上的一会就忘了
展开
-
std::array使用笔记
`std::array`是`C++`标准库提供的一个封装原生定长数组的模板类原创 2022-12-10 10:46:32 · 1805 阅读 · 1 评论 -
C++高级模板编程: 将tuple作为可变模板参数调用
需求描述有一个外部可变模板参数的接口,比如C++20的std::format需要将其封装成比较便捷的操作符调用方式,比如auto s = "{} {}" % T(a, b, c, ...);如何实现?需求分析首先这里需要一个T的可变模板参数函数,返回结果是一个固定类型的对象,不如就用标准库的 std::tuple吧然后还需要重载 %操作符template<typename Tuple>std::string operator%(std::string_view fmt,原创 2022-05-27 10:27:08 · 1304 阅读 · 0 评论 -
C++小技巧: 集合(vector, list, map, set)的反向遍历
一般的正向集合遍历1. for/index/size模式for(int i = 0; i < collection.size(); ++i) { std::cout << collection[i] << std::endl;}弊端: 只适合std::vector这种可以通过下标随机O(1)时间访问的集合类型2. for/begin/end 模式for(auto it = collection.begin(); it != collection.end(); +原创 2020-09-24 15:58:01 · 13217 阅读 · 1 评论 -
C++17 新功能介绍
C++17 新功能介绍std::any说明用来包裹任何类型的容器, 行为类似于void *, 但更安全, 有专门的类型转换api,转换的类型不匹配时会有转换异常抛出头文件 <any>示例代码std::any any = 0; // any = int(0)std::cout << std::any_cast<int>(any) ...原创 2020-04-22 20:02:57 · 478 阅读 · 0 评论 -
C++编程之std::shared_ptr使用那些事
1. std::shared_ptr的作用与适用场合2. std::shared_ptr的使用注意事项3. 使用std::shared_ptr的基本原则3.1 建议使用std::shared_ptr的场合3.2 不建议使用std::shared_ptr的场合原创 2017-12-29 17:02:14 · 3933 阅读 · 0 评论 -
C++11 多线程支持之std::thread
从C++11开始,C++标准库已经支持了线程库了,其实在底层,仍旧使用的是平台相关的线程API 有了std::thread之后,我们就不用在不同的平台使用不同的API了,比如Unix平台使用pthread, windows平台使用WinSDK的CreateThread了,接口使用去掉了平台差异性,使得项目开发具有更好的移植性1. std::thread的使用方法A. 所需头文件#include <原创 2018-01-03 10:09:43 · 20912 阅读 · 5 评论 -
C++11 异步编程std::future, std::promise, std::pakaged_task以及std::async
C++11 已经为我们提供了std::thread如此方便的多线程API,为啥还要“多此一举”地提供一大堆异步编程库呢? 哈哈, 其实制定C++11 规范的那些神人们考虑的比我们有远见多了 你想啊, 如果我们平时使用std::thread来进行异步调用的时候,需要获取异步调用的结果,那该怎么办呢? 如果使用全局加锁变量, 那我们有从何得知线程是否完成呢? 这就需要使用到我们的C++11神器s原创 2018-01-03 10:52:21 · 1201 阅读 · 0 评论 -
C++模板个人工具库(没有三方依赖, 纯头文件) : oyoungs/dispatch
C++模板库oyoungs/dispatch介绍这是个人开发维护的一个工具性质的纯头文件的C++库内容包括dispatch.hpp 同步/异步调度任务队列, async和sync 事件循环event_loop, 事件触发器events/emitter 串行链式调用的promise工具net.hpp 网络相关, 目前实现的有TCPClient TCPSer...原创 2018-11-07 18:19:39 · 430 阅读 · 0 评论 -
C++11 std::packaged_task的妙用
C++11 std::packaged_task的妙用std::packaged_task简介使用场景应对方案方案1: 使用任务队列方案2: 使用事件循环方案分析综合分析具体实现具体示例代码std::packaged_task简介std::packaged_task是C++11开始加入到STL(Standard Template Libarary, 标准模板库)的并发编程工具,位于头文件 ...原创 2018-11-05 12:13:43 · 1591 阅读 · 0 评论