
c++11
文章平均质量分 58
可能只会写BUG
这个作者很懒,什么都没留下…
展开
-
c++面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-20 11:02:16 · 445 阅读 · 0 评论 -
c++面试题
TOCTOC。原创 2024-09-20 11:01:43 · 294 阅读 · 0 评论 -
c++面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-19 10:26:11 · 484 阅读 · 0 评论 -
C++面试题
TOCTOC。原创 2024-09-18 19:48:25 · 972 阅读 · 0 评论 -
C/C++基本语言相关面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-10 10:37:22 · 1212 阅读 · 0 评论 -
IOCP (I/O Completion Ports) 介绍
IOCP(I/O Completion Ports)是 Windows 操作系统提供的一种高效的异步 I/O 机制,适用于处理大量并发 I/O 操作。它通过事件驱动的方式,避免了轮询开销,提高了 I/O 操作的效率。IOCP 通常与线程池结合使用,以提高并发处理能力,减少线程上下文切换的开销。通过合理使用 IOCP,可以构建高效、可扩展的高并发服务器和网络应用程序。原创 2024-09-08 08:47:11 · 1022 阅读 · 0 评论 -
Boost库一些概念
io_context 的线程数: net::io_context ioc{4};指定了 io_context 对象的并发处理能力为 4 个线程。在 Boost.Asio 中,可以通过创建多个线程并在线程中调用 io_context::run() 方法来实现线程池。手动创建线程池: 需要手动创建多个线程,并在每个线程中调用 ioc.run() 方法。它只是创建了一个 io_context 对象,并指定了线程池中的线程数为 4。线程池: 这并不意味着自动创建了一个线程池。要实现线程池,需要手动创建多个线程,原创 2024-09-07 10:24:11 · 1161 阅读 · 0 评论 -
线程池是怎么弥补上下文切换的开销的
线程池如何弥补上下文切换的开销线程池是一种用于管理和复用线程的技术,通过减少线程的创建和销毁开销,以及减少上下文切换的开销,来提高系统的性能和效率。原创 2024-09-07 10:23:44 · 559 阅读 · 0 评论 -
C++ enable_shared_from_this
std::enable_shared_from_this<> 是 C++11 引入的一个模板类,用于在一个类中安全地创建 std::shared_ptr 实例。std::enable_shared_from_this<> 的主要设计目的是解决在类的成员函数中安全地创建 std::shared_ptr 实例的问题。原创 2024-09-06 12:02:45 · 760 阅读 · 0 评论 -
奇异递归模板模式
静态多态性: CRTP通过模板实现了一种静态多态性, 即在编译期确定调用的具体函数,而不是在运行时通过虚函数表来确定。避免菱形继承问题: CRTP通过模板参数的方式避免了传统多继承中可能出现的菱形继承问题。每个派生类都明确地继承自一个特定的模板实例,不会出现多个继承路径的问题。类型安全: CRTP在编译期进行类型检查,确保只有符合特定条件的类才能继承模板基类。这种方式提供了更好的类型安全性,避免了运行时错误。CRTP的核心思想是让一个类通过模板参数继承自一个模板类,并且这个模板参数就是该类本身。原创 2024-09-06 10:09:54 · 468 阅读 · 0 评论 -
C++: std::once_flag 和 std::call_once
类型:std::once_flag 是一个结构体,用于记录某个函数是否已经被调用过。用途:与 std::call_once 配合使用,确保某个函数在多线程环境中只被执行一次。函数:std::call_once 是一个函数模板,用于确保某个函数在多线程环境中只被执行一次。参数:std::once_flag& flag:一个 std::once_flag 对象,用于记录函数是否已经被调用过。Function&& f:要执行的函数或可调用对象。Args&&… args:传递给函数的参数。原创 2024-09-05 12:27:10 · 688 阅读 · 0 评论 -
C++ 原子变量atomic variable
原子变量:用于在多线程环境中进行无锁的、线程安全的操作。原子性:确保操作是不可分割的,避免数据竞争和不一致。内存顺序:控制内存访问的顺序和可见性,提供多种选项以满足不同需求。应用场景:适用于需要线程安全的计数器、标志位等场景。原创 2024-09-05 12:26:17 · 1300 阅读 · 0 评论 -
C++ STL Algorithm 算法
TOCTOC。原创 2024-08-16 08:33:52 · 652 阅读 · 0 评论 -
C++ STL Iterator 迭代器
TOCTOC。原创 2024-08-16 08:33:23 · 767 阅读 · 0 评论 -
C++ STL 关联型容器
map 的特性是,所有元素会根据元素的键值自动被排序,map 的所有元素都是 pair,同时拥有实值(Value)和键值(Key)。pair 的第一元素被视为键值,第二个元素被视为实值。map 不允许两个元素拥有相同的键值。原创 2024-08-15 09:27:52 · 448 阅读 · 0 评论 -
C++ STL deque 双端队列
双端操作:可以在队列的两端高效地进行插入和删除操作。动态数组:内部实现为一个动态数组,支持随机访问。分段连续存储:与 vector 不同,deque 的分段连续存储结构使得在两端插入和删除元素时效率更高。= d.end();++it) {// 输出: 2 1 3// [1, 3]// [1]// 输出: Size: 1return 0;ch<='z';原创 2024-08-15 09:27:12 · 314 阅读 · 0 评论 -
C++ 11 STL list
TOCTOC。原创 2024-08-14 18:10:00 · 505 阅读 · 0 评论 -
C++11 STL中的Vector使用细节
TOCTOC。原创 2024-08-14 08:32:29 · 508 阅读 · 0 评论 -
C++ STL
TOCTOC。原创 2024-08-13 15:50:07 · 420 阅读 · 0 评论 -
C++ 线程 一些同步方式
TOCTOC。原创 2024-08-13 10:51:22 · 1118 阅读 · 0 评论 -
C++ 线程
TOCTOC。原创 2024-08-13 10:48:54 · 1198 阅读 · 0 评论 -
C++ 11 智能指针 自动内存管理
TOCTOC。原创 2024-08-13 08:27:59 · 795 阅读 · 0 评论 -
C++ 11 默认的六个构造
【代码】C++ 11 默认的六个构造。原创 2024-08-13 08:27:40 · 158 阅读 · 0 评论 -
C++11 bind
bind 用来将可调用对象和参数一起进行绑定。可调用对象包括普通函数、全局函数、静态函数、类静态函数甚至是类成员函数,参数包括普通参数和类成员。绑定后的结果,可以使用 std::function 进行保存,并延迟调用到我们需要的时候。原创 2024-08-12 08:47:58 · 569 阅读 · 0 评论 -
C++ 11 类模版 std::function
类模版 std::function 是可调用对象的包装器,可以包装除了类成员函数之外的所有可调用对象。包括,普通函数,函数指针, lambda,仿函数。通过指定的模板参数,它可以用统一的方式保存,并延迟执行它们。所谓的延迟执行,就是回调了。原创 2024-08-11 12:18:44 · 294 阅读 · 0 评论 -
C++ 11 enum和 assert
TOCTOC。原创 2024-08-11 12:16:46 · 596 阅读 · 0 评论 -
C++ functor 仿函数和Lambda
TOCTOC。原创 2024-08-10 23:58:16 · 1153 阅读 · 0 评论 -
C++ 11 auto(自动类型推导) 和 decltype(获取表达式类型)
/todo 推导类型(decltype) 重定义 typedef// 推导类型为map<int, string>::value_type()return 0;原创 2024-08-10 11:20:05 · 847 阅读 · 0 评论 -
C++ 11 for 循环和容器
C++为 for 提供 for range 的用法。对于 STL(vector/list/map)的遍历带来了极大的书写便利。(range for)语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是:for STLvector 初始化std::vector 是 C++ 标准库中的一个动态数组容器,定义在 头文件中。它提供了高效的随机访问和在末尾插入/删除元素的能力,但在中间或开头插入/删除元素的效率较低。std::vector 是动态大小的,可以根据需要自动调原创 2024-08-09 08:47:05 · 674 阅读 · 0 评论 -
C++ 11中一些新的关键字用法
nullptr 是用于解决 NULL 和 0 的有疑义关系的。NULL 通常被义为(void*)0。在如下应用中会引发歧义。原创 2024-08-09 08:46:40 · 465 阅读 · 0 评论