文章分类 -  03C&C++

摘要:#include<list> #include<thread> #include<iostream> #include<chrono> #include <mutex> #include <atomic> /* C++ 11 窗口卖票 int cout=100; lock_guard<std::mu 阅读全文
posted @ 2025-10-18 19:26 焦涛 阅读(2) 评论(0) 推荐(0)
摘要:线程基本用法 #include<iostream> #include <thread> #include <chrono> /* C++语言级别的多线程编程=>代码可以跨平台 windows/linux/mac thread/mutex/condition_variable lock_gard/un 阅读全文
posted @ 2025-10-18 12:33 焦涛 阅读(4) 评论(0) 推荐(0)
摘要:在 C++11 中,没有直接的安全方法可以从外部强制终止一个线程。推荐的做法是使用协作式取消,即通过标志位让线程自行退出。以下是几种实现方法: 背景 c++ 11中主线程中开启子线程调用一个耗时算法,如果算法超时,主线如何结束子线程.(很多情况下算法是不能能修改的) 实现 方法1:使用原子标志位(推 阅读全文
posted @ 2025-10-18 11:53 焦涛 阅读(4) 评论(0) 推荐(0)
摘要:容器数据接口及时间复杂度总结 以下是 C++ STL 容器的底层数据结构及增删查时间复杂度总结: 容器 底层数据结构 插入(平均) 删除(平均) 查找(平均) 备注 vector 动态数组 O(n) O(n) O(1)(索引) 尾部插入/删除 O(1) deque 分块数组 + 双端队列 O(1)( 阅读全文
posted @ 2025-10-15 22:22 焦涛 阅读(26) 评论(0) 推荐(0)
摘要:简单工厂 #include <string> #include <iostream> /* 简单工程 Simlpe Factory(不包含在23种设计模式中) 工程方法 Factory Method 抽象工程 Abstract Factory 工厂模式:主要时封装了对象的创建 */ class Ca 阅读全文
posted @ 2025-10-13 11:46 焦涛 阅读(7) 评论(0) 推荐(0)
摘要:参考 1.百度C++二面:C/C++ 中 volatile 关键字的作用? 2.C++中的关键字volatile详解 3.C++ volatile 4.C++ 高级语法:volatile 阅读全文
posted @ 2025-10-13 08:51 焦涛 阅读(4) 评论(0) 推荐(0)
摘要:懒汉式单例模式 #include <iostream> /* 单例模式:一个类不管创建多少个对象,永远只能得到该类型一个对象的实例 常用到,比如日志模块、数据库模块 单例模式类型: 饿汉式单例模式:还没有获取实例对象,实例对象就已经产生了(导致程序启动时就需要实例化调用构造函数,如果构造函数需要做大 阅读全文
posted @ 2025-10-11 23:15 焦涛 阅读(6) 评论(0) 推荐(0)
摘要:通过函数指针实现如下功能 #include<iostream> /* 函数对象=>C语言里面的函数指针 */ template<typename T> inline bool myless(T a, T b) //即使这里使用了inline指定为内联,但是在调用compare不是以内联方式展开调用 阅读全文
posted @ 2025-10-10 15:23 焦涛 阅读(7) 评论(0) 推荐(0)
摘要:#include<iostream> /* C++的运算符重载:使对象的运算表现得和编译器内置类型一样 */ class CComplex { public: CComplex(int r = 0, int i = 0) :m_real(r), m_imaginary(i) { } //指导编译器怎 阅读全文
posted @ 2025-10-03 22:45 焦涛 阅读(11) 评论(0) 推荐(0)
摘要:问题的引出 在前面的《c++类模板实现一个c++ STL里面的一个顺序容器 vector 向量容器》基础上,我们添加一个Test类。 class Test { public: Test() { std::cout << "Test()" << std::endl; } ~Test() { std:: 阅读全文
posted @ 2025-10-03 09:02 焦涛 阅读(11) 评论(0) 推荐(0)
摘要:#include <iostream> /* 类模板=》实现一个c++ STL里面的一个顺序容器 vector 向量容器 */ template<typename T> class vector { public: vector(int size = 10) { _first = new T[siz 阅读全文
posted @ 2025-10-03 08:33 焦涛 阅读(9) 评论(0) 推荐(0)
摘要:#include<iostream> /* 类模板实现顺序栈 类模板=》实例化=》模板类 */ //template<typename > template<typename T=int> //可以加默认类型参数 class SeqStack //模板名称 +类型参数列表=类名称 { public: 阅读全文
posted @ 2025-10-03 07:52 焦涛 阅读(14) 评论(0) 推荐(0)
摘要:#include<iostream> /* * C++ 函数模板 * 模板的意义:对类型也可以进行参数化 * * 函数模板 《=是不进行编译的,因为类型还不知道 * 模板的实例化《=函数调用点 * 模板函数《=才是要编译器所编译的 * * 模板类型参数 typename/class * 模板非类型参 阅读全文
posted @ 2025-10-02 19:40 焦涛 阅读(9) 评论(0) 推荐(0)
摘要:实现一个String类 #include<string> #include<iostream> class String { public: String(const char* str = nullptr)//普通构造函数 { std::cout << this << "String" << st 阅读全文
posted @ 2025-10-01 14:09 焦涛 阅读(6) 评论(0) 推荐(0)
摘要:一、OOP实现一个顺序栈 /* OOP实现一个顺序栈 */ class SeqStack { public: /* * 析构函数 */ SeqStack(int size = 10)//是可以带参数的,因此可以提供多个构造函数 { std::cout << this << "SeqStack" << 阅读全文
posted @ 2025-10-01 09:39 焦涛 阅读(10) 评论(0) 推荐(0)
摘要:一、OOP实现一个顺序栈 #include <iostream> /* OOP实现一个顺序栈 */ class SeqStack { public: void init(int size = 10) { _pstack = new int[size]; _top = -1; _size = size 阅读全文
posted @ 2025-10-01 08:14 焦涛 阅读(9) 评论(0) 推荐(0)
摘要:c++代码 #include<iostream> int sum(int a, int b) { int temp = 0; temp = a + b; return temp; } int main() { int a = 10; int b = 20; int ret = sum(a , b); 阅读全文
posted @ 2025-09-30 21:51 焦涛 阅读(12) 评论(0) 推荐(0)
摘要:进程虚拟地址空间区域划分 示例程序如下 #include <iostream> int gdata1 = 10; int gdata2 = 0; int gdata3; static int gdata4 = 11; static int gdata5 = 0; static int gdata6; 阅读全文
posted @ 2025-09-30 18:50 焦涛 阅读(3) 评论(0) 推荐(0)
摘要:很好的问题!虽然编译器有默认对齐规则,但在很多场景下我们需要使用 alignas 来显式控制对齐方式。以下是需要手动指定对齐的主要原因: 1. 满足特定硬件要求 SIMD 指令集(SSE/AVX) #include <immintrin.h> // SSE 需要 16 字节对齐 struct ali 阅读全文
posted @ 2025-09-30 00:05 焦涛 阅读(4) 评论(0) 推荐(0)
摘要:为什么要字节对齐 1. 性能原因 硬件优化:大多数 CPU 在访问对齐的内存地址时效率更高 减少内存访问次数:未对齐的数据可能需要多次内存访问才能读取完整 缓存效率:对齐的数据能更好地利用 CPU 缓存行 例如,一个4字节的整数如果存储在4的倍数的地址上,那么处理器一次内存访问就可以读取它;如果存储 阅读全文
posted @ 2025-09-29 23:49 焦涛 阅读(4) 评论(0) 推荐(0)