c/c++
xc__
这个作者很懒,什么都没留下…
展开
-
c++中互斥锁实现读写锁
#include <bits/stdc++.h> using namespace std; class RWlock{ public: RWlock(int state_):state(state_){} void rlock(){ unique_lock<mutex> lck(mtx); while(state<0){ cond.wait(lck); } state++;原创 2020-09-11 15:32:35 · 487 阅读 · 0 评论 -
c++ STL中迭代器删除元素
对于序列容器vector, deque来说,使用erase (itertor)后,后边的每个元素的迭代器都会失效,但是后边每个元素都会往前移动一个位置,当前的迭代器指针直接指向了下一个元素;。 对于关联容器map set 来说,使用了erase(iterator)后,当前元素的迭代器失效,但是其结构是红黑树,删除当前元素的,不会影响到下一个元素的迭代器,所以在调用erase之前,记录下一个 ...原创 2020-04-19 21:34:26 · 642 阅读 · 0 评论 -
c++ 线程池的实现
线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,线程数一般取cpu数量+2比...转载 2020-03-18 12:04:46 · 313 阅读 · 0 评论 -
c++ 实现String类的注意要点
自定义实现c++中的string类型。 通常c++ string的基本功能如下: class String { public: String(const char *str = nullptr);// 普通构造函数 String(const String &other);// 拷贝构造函数 ~String(void);// 析构函数 String & opera...原创 2020-03-08 16:23:58 · 233 阅读 · 0 评论 -
c++中using 关键字
作用 1.在当前文件中引入命名空间,比如using namespace std。 2.等效于typedef的作用,该方法是在c++11中引入的。 比如: using uVec = std::vector<int>; typedef std::vector<int> tVec; int main() { int a[3]={1,2,3}; //v1,v2,v3...原创 2020-02-27 18:47:48 · 258 阅读 · 0 评论 -
c++中静态绑定和动态绑定
动态绑定和静态绑定是为了支持类中的多态。静态和动态分别对应着编译期和运行期。 静态对象:是在编译期就确定了类型,不能改变。 动态对象:在运行期间确定的类型,可以改变其类型。 静态绑定:绑定的是对象的静态类型,某特性(比如函数)依赖于对象的静态类型,发生在编译期。 动态绑定:绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期 class base{ public: ...原创 2020-02-27 17:00:11 · 185 阅读 · 0 评论