C++
文章平均质量分 89
哈哈coding
这个作者很懒,什么都没留下…
展开
-
C++多线程(4)——条件变量、异步任务、原子atomic
目录条件变量std::condition_variable注意std::async, std::futurestd::launch::async和std::launch::deferred参数与std::thread的区别std::packaged_task, std::promisestd::packaged_taskstd::promise原子操作std::atomic条件变量std::condition_variable在前面使用互斥量实现从消息队列中读写数据的代码中,从消息队列读取元素(消费者原创 2021-01-31 15:44:52 · 734 阅读 · 0 评论 -
C++多线程(3)——互斥量、unique_lock()、单例类设计
目录互斥量mutex死锁std::lock()函数模板std::adopt_lock参数std::unique_lock()与lock_gard()的区别std::try_to_lock参数std::defer_lock参数成员函数lock()、unlock()、try_lock()、release()粒度所有权传递单例设计模式共享数据单例类多线程中创建单例类std::call_once互斥量mutexclass A{public: // 向消息队列中插入元素 void inMsgRecvQue原创 2021-01-31 15:35:08 · 460 阅读 · 0 评论 -
C++多线程(2)——创建线程、线程传参
目录创建线程线程传参传递临时对象作为线程参数总结传递类对象、智能指针创建线程#include<iostream>#include<thread>using namespace std;void myPrint(){ cout<<"myPrint()线程开始执行"<<endl; cout<<"myPrint()线程执行完毕"<<endl; return;}class TA{public:原创 2021-01-31 10:54:57 · 647 阅读 · 0 评论 -
C++多线程(1)——线程、进程
目录进程与线程区别进程间通信方式线程间通信方式进程与线程并发:一个程序同时执行多个独立的任务。多个任务之间的切换(上下文切换)是要有时间开销的,比如操作系统要保存切换时的状态、执行进度等信息,切换回来后要复原这些信息。使用并发的原因主要是能够同时处理不同的任务,提高性能。可执行程序:磁盘上的一个文件,windows上以.exe为后缀名的文件。Linux上rwxrwxrwx中x代表执行权限。进程:就是一个可执行程序运行起来了,就创建了一个进程。进程是对运行时程序的封装,是系统进行资原创 2021-01-31 10:50:21 · 376 阅读 · 0 评论 -
C++面试基础知识整理(8)
目录标准模板库STL基本组成动态数组实现原理vector和listvector迭代器失效dequesetmapmap和set的区别map和unordered_map的区别allocator分配器作用使用标准模板库STL基本组成容器、迭代器、仿函数、算法、分配器、配接器他们之间的关系:分配器给容器分配存储空间,算法通过迭代器获取容器中的内容,仿函数可以协助算法完成各种操作,配接器用来套接适配仿函数组件描述容器(Containers)容器是用来管理某一类对象的集合。C++ 提原创 2021-01-30 15:01:39 · 203 阅读 · 0 评论 -
C++面试基础知识整理(7)
目录运算符重载问题函数模板与类模板使用问题可调用对象左值与右值运算符重载包括友元函数重载和成员函数重载一元运算符重载-(负号)++(自增)二元运算符重载+(加号):第一个参数是*this<<(输出):只能通过友元函数重载,因为第一个参数只能是ostream&,不能是*this[](索引):只能通过成员函数重载,因为第一个参数只能是*this指针。class Coordinate{ // 输出重载 friend ostream& op原创 2021-01-30 13:31:02 · 77 阅读 · 0 评论 -
C++面试基础知识整理(6)
目录隐藏与覆盖重载与重写抽象类、接口类使用运行时类型识别RTTI作用使用异常处理使用友元函数与友元类友元函数使用友元类使用隐藏与覆盖隐藏:父子关系、成员同名 class Person { public: void play(); void work(); } class Soldier:public Person { public: void play(); // 隐藏 void wor原创 2021-01-30 12:17:36 · 104 阅读 · 0 评论 -
C++面试基础知识整理(5)
目录虚继承与虚基类作用使用虚函数特征使用纯虚函数作用使用问题虚函数指针、虚函数表虚析构函数作用原理虚继承与虚基类作用虚继承用于解决多继承条件下的菱形继承问题(浪费存储空间、存在二义性)。假如类 A 有一个成员变量 a,那么在类 D 中直接访问 a 就会产生歧义,编译器不知道它究竟来自 A -->B–>D 这条路径,还是来自 A–>C–>D 这条路径。//间接基类A class A{ protected: int m_a; }原创 2021-01-30 12:08:10 · 102 阅读 · 0 评论 -
C++面试基础知识整理(4)
目录面向对象封装问题继承多态构造函数问题对象成员与对象成员指针使用this指针使用深拷贝与浅拷贝面向对象封装public 成员:可以被任意实体访问protected 成员:只允许被子类及本类的成员函数访问private 成员:只允许被本类的成员函数访问问题如何定义一个只能在堆上(栈上)生成对象的类?只能在堆上:方法:将析构函数设置为私有原因:C++ 是静态绑定语言,编译器管理栈上对象的生命周期,编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性。若析构函数不可访问,原创 2021-01-30 11:50:20 · 131 阅读 · 0 评论 -
C++面试基础知识整理(3)
目录inline内联函数使用问题explicit作用使用sizeof问题memcpy与memmove字符串相关strlenstrcpylambda表达式函数指针智能指针作用inline内联函数使用// 类内定义,隐式内联class A { int doA() { return 0; } // 隐式内联}// 类外定义,需要显式内联class A { int doA();}inline int A::doA() { return 0; } // 需要显式原创 2021-01-30 11:34:37 · 169 阅读 · 0 评论 -
C++面试基础知识整理(2)
目录引用和指针的区别new/delete问题const作用使用问题static作用使用问题强制类型转换符const_cast使用static_castdynamic_cast引用和指针的区别指针是一个实体,需要分配内存空间;引用只是变量的别名,不需要分配内存空间。引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。指针和引用的自增运算结果不一样。(指针是指向下一个空间,引用时引用的变量值加1)sizeof 引用得到的是所指向的变量(对象)的大小,而原创 2021-01-30 11:28:54 · 116 阅读 · 0 评论 -
C++面试基础知识整理(1)
目录参考链接基础知识源文件从文本到可执行文件经历的过程C++11的新特性gcc不同优化等级的区别C++的内存管理问题文件重定义条件编译作用使用参考链接GitHub:C++面试基础知识总结基础知识源文件从文本到可执行文件经历的过程预处理,根据文件中的预处理指令来修改源文件的内容。如#include指令,作用是把头文件的内容添加到.cpp文件中,产生.ii文件,编译,将其翻译成等价的中间代码或汇编代码,产生汇编文件(.s文件)汇编,把汇编语言翻译成目标机器指令,产生目标文件(.o或原创 2021-01-30 10:59:05 · 368 阅读 · 0 评论 -
upper_bound和lower_bound的区别
这两个算法默认用于升序序列,若要用于降序序列必须指定比较函数!!!!对于升序序列:lower_bound返回第一个大于等于val的元素的迭代器upper_bound返回第一个大于val的元素的迭代器对于降序序列:必须指定比较函数:static bool weightComp(int a, int b){ return a > b;}lower_bo...原创 2019-06-29 22:05:00 · 510 阅读 · 0 评论