随笔分类 -  C++

C++笔记
摘要:查看目标文件信息 查看目标文件段信息 readelf -S test | grep debug 查看文件信息,是否有调试信息等 file test 移除调试信息 strip test gdb调试 1. 可执行文件 gcc -g test.c -o test gdb test (gdb)set arg 阅读全文
posted @ 2024-11-06 15:36 sgqmax 阅读(13) 评论(0) 推荐(0) 编辑
摘要:可见性修饰符和目标 cmake中有三种可见性修饰符:PRIVATE、PUBLIC和INTERFACE 这些修饰符随着命令一起使用,如target_include_directories和target_link_libraries等 这些修饰符是在目标targets的上下文中指定的 目标targets 阅读全文
posted @ 2024-11-06 15:23 sgqmax 阅读(29) 评论(0) 推荐(0) 编辑
摘要:为了更直观的感受到内存布局,我们使用gcc的编译选项-fdump-lang-class查看 如下代码 class Base{ public: Base(){} virtual ~Base(){} privte: int i; }; 使用如下命令编译 g++ -O0 -std=c++11 -fdump 阅读全文
posted @ 2024-11-03 17:50 sgqmax 阅读(22) 评论(0) 推荐(0) 编辑
摘要:在计算机中,我们都知道0.1+0.2是不等于0.3的 那等于多少呢?我们使用程序测试一下 #include<iomanip> int main(){ std::cout<<std::setprecision(18)<<0.1+0.2; return 0; } //out: 0.30000000000 阅读全文
posted @ 2024-11-03 17:47 sgqmax 阅读(15) 评论(0) 推荐(0) 编辑
摘要:迭代器失效 序列式容器 vector deque 使用连续分配的内存 删除一个元素,会导致后面的元素前移 不能使用如erase(iter++)这种方式删除元素 erase()会返回下一个有效的迭代器 /* for(iter=v.begin(); iter!=v.end(); iter++){ if( 阅读全文
posted @ 2024-11-03 17:37 sgqmax 阅读(14) 评论(0) 推荐(0) 编辑
摘要:C++初始化 C++11之前的初始化 T var; // 构造 T var(val); T var= val; // 列表 T var{val}; T var={val}; C++11统一了初始化方法:列表初始化 brace-initialization 消除了之前初始化基本类型、聚合类型和非聚合类 阅读全文
posted @ 2024-11-03 17:35 sgqmax 阅读(8) 评论(0) 推荐(0) 编辑
摘要:构造函数constructor explicit的引入,是为了能够制止“单一参数的constructor”被当作一个conversion运算符 带有默认构造函数的对象成员 若一个类中包含对象成员,且该对象有默认构造函数,此时: 若该类没有构造函数 则编译器会合成一个默认构造函数,且发生在真正调用时 阅读全文
posted @ 2024-11-01 20:11 sgqmax 阅读(30) 评论(0) 推荐(0) 编辑
摘要:一、object typedef struct{ float x; float y; float z; }Point3d; 可以有以下方法打印上述类型字段: 定义函数 void print_point3d(const Point3d* pd){ printf("(%g,%g,%g)", pd->x, 阅读全文
posted @ 2024-11-01 20:11 sgqmax 阅读(59) 评论(0) 推荐(0) 编辑
摘要:在许多为了性能和效率的场景下,需要开发一些lock-free的算法和数据结构 atomic_flag 原子布尔类型,只支持 test-and-set 和 clear 操作 构造函数 atomic_flag()noexcept=default; atomic_flag(const atomic_fla 阅读全文
posted @ 2024-11-01 20:10 sgqmax 阅读(25) 评论(0) 推荐(0) 编辑
摘要:std::future 在介绍promise和packaged_task时多次提到future,现在详细介绍该类型 std::future用来获取异步任务的结果,是一种线程间同步的方式,通常由某个Provider创建,Provider在某个线程中设置共享状态的值,与该共享状态相关联的future对象 阅读全文
posted @ 2024-11-01 20:09 sgqmax 阅读(27) 评论(0) 推荐(0) 编辑
摘要:头文件包含: Providers类 std::promise std::packaged_task Futures类 std::future std::shared_future Providers函数 std::async() 其他类型 std::future_error std::future_ 阅读全文
posted @ 2024-11-01 20:09 sgqmax 阅读(49) 评论(0) 推荐(0) 编辑
摘要:std::packaged_task std::packaged_task包装一个可调用对象,并允许获取该可调用对象计算的结果,可调用对象内部包含两个基本元素: 1.被包装的任务 任务是一个可调用对象,如函数指针或函数对象,该对象的执行结果会传递给共享状态 2.共享状态 用于保存任务的返回结果,并可 阅读全文
posted @ 2024-11-01 20:08 sgqmax 阅读(85) 评论(0) 推荐(0) 编辑
摘要:条件变量 类似于pthread库中的pthread_cond_*()提供的功能,C++ 11标准提供了两种表示条件变量的类,分别是condition_variable和condition_variable_any,定义在头文件<condition_variable>中 std::condition_ 阅读全文
posted @ 2024-11-01 20:07 sgqmax 阅读(64) 评论(0) 推荐(0) 编辑
摘要:互斥量 C++11互斥锁定义在<mutex>头文件中,提供了独占资源的特性 C++11头文件中定义的互斥量 互斥量 说明 mutex 基本互斥量 recursive_mutex 递归互斥量 timed_mutex 定时互斥量 recursive_timed_mutex 递归定时互斥量 std::mu 阅读全文
posted @ 2024-11-01 20:06 sgqmax 阅读(24) 评论(0) 推荐(0) 编辑
摘要:进程与线程 进程:系统资源分配的最小单元,通常被定义为一个正在运行的程序实例 线程:系统任务调度的最小单元 进程间通信:管道,信号量,信号,消息队列,共享内存,套接字 线程间通信:锁机制,信号量机制,信号机制,屏障 同步:保证任务片段的先后顺序 互斥:为了保证资源在同一时刻只能被一个线程使用,即数据 阅读全文
posted @ 2024-11-01 20:04 sgqmax 阅读(12) 评论(0) 推荐(0) 编辑
摘要:信号 信号是UNIX系统里常用的进程间异步通信方式 asio库提供类,利用异步IO的方式处理UNIX信号 类原型 class signal_set{ public: explicit signal_set(io_service& io_service); signal_set(io_service& 阅读全文
posted @ 2024-11-01 20:00 sgqmax 阅读(8) 评论(0) 推荐(0) 编辑
摘要:boost.pool boost.pool库基于简单分隔存储的思想实现了一个快速、紧凑的内存池 不仅能够管理大量对象,还可以用作STL的内存分配器,在需要大量分配或释放小对象时效率很高,且不需要考虑delete 包含4个组成部分 简单pool 分配类实例object_pool 单件内存池single 阅读全文
posted @ 2024-11-01 19:59 sgqmax 阅读(17) 评论(0) 推荐(0) 编辑
摘要:asio 基于操作系统提供的异步机制,不要求使用多线程和锁,采用前摄器proactor设计模式,实现了可移植的异步IO操作 目前asio主要关注于网络通信方面,封装了socket API,提供了TCP、UDP、ICMP等网络通信协议,但asio的异步操作不局限于网络编程,还支持UNIX信号,定时器, 阅读全文
posted @ 2024-11-01 19:58 sgqmax 阅读(30) 评论(0) 推荐(0) 编辑
摘要:随机数生成设备 随机数生成设备random_device,生成非确定性随机数,在Linux中通过读取/dev/urandom设备,Windows中使用rand_s 重载了()运算符,每次调用会生成一个min()到max()之间的高质量随机数种子,若在Linux(Unix Like)下,可以使用这个生 阅读全文
posted @ 2024-11-01 19:08 sgqmax 阅读(29) 评论(0) 推荐(0) 编辑
摘要:ratio 先看一下ratio的定义 template<intmax_t N,intmax_t D=1> class ratio; ratio是由非类型参数定义的模板,用来定义一个比率N/D,如ratio<1,-2>表示-0.5 标准库中定义的常用ratio类型 type definition 说明 阅读全文
posted @ 2024-11-01 19:08 sgqmax 阅读(16) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示