本博客因为部署在netlify, 所以可能会出现部分图片加载不出来的情况。如有必要请科学上网!
socket编程
基本函数和结构体 创建socket int socket(int domain, int type, int protocol) 成功返回0;失败返回-1,同时设置错误代码errno。 单个进程能够创建socket连接的数量受系统参数open f...函数对象、谓词和STL内建函数对象
函数对象 概念 函数对象又称为仿函数,本质上是一个类,因其重载了operator()运算符后可以像函数一样被调用,因此被称为仿函数或者函数对象。 根据接收参数的数量,函数对象还可以分为: 一元函数对象: 接受一个参数。 二元函数对象: 接受两个参数...STL-map
map 存储 key-value,key唯一(不存在两个相同的key). 底层:红黑树。红黑树参考:RBTree. 是否有序:有序(key升序) unordered_map 存储key-value,key唯一(不存在两个相同的key). 底层:...STL-set
set 集合。存储指定的类型:std::set<int> mySet;. 横向对比 特性 set multiset unordered_set unordered_multiset 底层结构 红黑树(平衡二叉搜索树) 红...完美转发(std::forward)
左值和右值 了解完美转发前,必须先了解左值和右值的概念,以及左值引用和右值引用的概念。参见:左值/右值引用和std::move 万能引用 万能引用是一种特殊的引用,它只能出现在模板函数和模板类中。并且,万能引用的格式固定,为T&& t...左值/右值引用和std::move
左值和右值 要想了解std::move,需要先了解左值和右值,以及左值引用和右值引用。先说简单的判断左值和右值的方法: 左值: 可以取地址、可以位于等号左边。也既:可以出现在等号(赋值运算符)左边,也可以出现在等号右边(取地址或者赋值给其他变量)...C++ nodiscard
nodiscard 用于标记函数的返回值: [[nodiscard]] int Compute(); 当调用该函数却不赋值返回结果时,将收到警告: 123void Foo() { Compute();} 1warning: ...shared_lock
shared_lock 专门用于管理 std::shared_timed_mutex 或 std::shared_mutex 的共享锁。它简化了获取和释放共享锁的操作,并提供了一些附加功能,比如延迟锁定、超时锁定等。 成员函数: shared_l...shared_timed_mutex
shared_timed_mutex 共享超时互斥锁(具备超时功能的读写锁) 成员函数: lock_shared(): 获取==共享锁==,如果当前有独占锁,则阻塞。 try_lock_shared(): 尝试获取共享锁,如果成功则返回true,否...