随笔分类 -  C++

摘要:所谓的安全队列,就是封装一个加条件变量和互斥锁的一个队列类,以便在多线程访问该队列资源时是并行操作 1、多个线程从一个队列中读取数据,加互斥锁和条件变量 #ifndef SHAREDQUEUE_HPP #define SHAREDQUEUE_HPP #include<iostream> #inclu 阅读全文
posted @ 2021-10-20 21:08 王清河 阅读(547) 评论(0) 推荐(0) 编辑
摘要:[参考](07 C++ 线程间同步 - 知乎 (zhihu.com)) 消费者和生产者 std::mutex std::thread 1. 消费者“被动等待” #include<iostream> #include<thread> #include<deque> #include<mutex> // 阅读全文
posted @ 2021-10-18 18:01 王清河 阅读(98) 评论(0) 推荐(0) 编辑
摘要:在 C++ 构造函数中,对于有默认的参数的构造函数时 #include<iostream> class complex { public: complex(double r = 0, double i = 0) // 1 : re(r), im(i) { std::cout << "construc 阅读全文
posted @ 2021-10-14 19:33 王清河 阅读(38) 评论(0) 推荐(0) 编辑
摘要:weak_ptr 的作用就是为了解决 shared_ptr 循环引用的问题,原理是对于shared_ptr 的指针采用只引用不计数的方法。 weak_ptr 的初始化只能是 weak_ptr 和 shared_ptr 的类型数据。 weak_ptr 使用之前需要做安全检测,expired() 判断是 阅读全文
posted @ 2021-10-14 11:32 王清河 阅读(439) 评论(0) 推荐(0) 编辑
摘要:根据一个数组来建一棵二叉树 #include<iostream> #include<vector> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; // TreeNode(int x) 阅读全文
posted @ 2021-07-30 14:11 王清河 阅读(69) 评论(0) 推荐(0) 编辑
摘要:string.cpp /* String 类 */ class String { public: String(const char*str=NULL); //构造函数 String(const String &str); //拷贝构造函数 ~String(); //析构函数 String oper 阅读全文
posted @ 2021-05-07 20:01 王清河 阅读(201) 评论(0) 推荐(0) 编辑
摘要:循环引用指的是使用多个智能指针 shared_ptr 时,出现了指针之间的相互指向,从而形成环的情况,类似于死锁现象,在这种情况下智能指针往往不能正常调用对象的析构函数,从而造成内存泄漏; #include<iostream> #include<memory> using namespace std 阅读全文
posted @ 2021-04-25 10:22 王清河 阅读(1818) 评论(0) 推荐(1) 编辑
摘要:C 模拟 C++ 的多态特性(指向派生类的基类指针在调用虚函数时是派生类重写的函数) 利用的是函数指针,因为 C 的 struct 是不能有函数的(C++ 的struct可以) #include<iostream> using namespace std; struct A{ virtual voi 阅读全文
posted @ 2021-04-23 11:16 王清河 阅读(452) 评论(0) 推荐(0) 编辑
摘要:对于push_back和emplace_back在数组尾后添加元素的区别: #include<vector> #include<string> #include<iostream> using namespace std; struct Person{ string name; int age; / 阅读全文
posted @ 2021-04-23 11:13 王清河 阅读(173) 评论(0) 推荐(0) 编辑
摘要:# const char* 、 char * 和 string 相互转换 1. string 转 const char* string s = "abc"; //const char* => string const char *s = s.c_str(); //string 转成 char* 直接 阅读全文
posted @ 2021-04-16 20:58 王清河 阅读(1525) 评论(0) 推荐(0) 编辑
摘要:strcpy 和 memcpy 的区别 源码实例: #include<cstdio> #include<cstring> #include<cassert> char *myStrcpy(char* dest, const char* src){ if ((NULL == dest) || (NUL 阅读全文
posted @ 2021-04-14 23:08 王清河 阅读(121) 评论(0) 推荐(0) 编辑
摘要:1. 重写 == 操作符 #include<iostream> using namespace std; struct A{ char ch; int val; friend bool operator==(const A &ob1, const A &ob2); bool operator==(c 阅读全文
posted @ 2021-04-10 17:04 王清河 阅读(856) 评论(0) 推荐(0) 编辑
摘要:ubuntu18(g++、gdb) #include<iostream> #include<stdio.h> using namespace std; int main(){ int x = 1; int y = 2; int &b = x; return 0; } 编译带参数 -g gdb ./程 阅读全文
posted @ 2021-04-10 15:42 王清河 阅读(185) 评论(0) 推荐(0) 编辑
摘要:+ 宏主要是用于定义常量及书写复杂的内容;typedef 主要定义类型别名; + 宏替换发生在预处理阶段,属于文本插入替换;typedef 是编译的一部分; + 宏不检查类型; typedef 会检查数据类型; + 宏不是语句,不在结尾处加分号; typedef 是语句,要加分号标识结束; + 注意 阅读全文
posted @ 2021-04-08 20:17 王清河 阅读(230) 评论(0) 推荐(0) 编辑
摘要:# new/delete 和 malloc/free 的区别与联系 + malloc/free 则是库函数,而 new/delete 是运算符; + malloc 开辟空间需要手动计算大小并传入,new 是后接类型编辑器自己计算; + malloc 返回类型为 void*,使用时需要强制转换,new 阅读全文
posted @ 2021-04-07 18:07 王清河 阅读(243) 评论(0) 推荐(0) 编辑
摘要:# 堆和栈的区别 + 管理方式不同:堆中资源由程序员控制,容易产生内存泄漏,栈资源由编译器自动管理,无需手动控制; + 内存管理机制不同:系统有一个记录空闲列表的链表,当系统收到程序申请时,遍历该链表,寻找第一个空间大于申请空间的堆节点,删除空闲节点列表中的该节点,并将该节点空间分配给程序(大多数系 阅读全文
posted @ 2021-04-06 19:30 王清河 阅读(156) 评论(0) 推荐(0) 编辑
摘要:Q:C 和 C++ 的区别是什么? A:C++ 在设计之初可以看作是 C 的超集,但是随着C++的发展,C 和 C++ 现在已经发展成了两种不同的语言,但是它们的联系还是很密切的: + 首先 C 和 C++ 在基础语法上差别不大。 这里说的基础语法说的是语法细节,C++ 能支持绝大多数的 C 的基础 阅读全文
posted @ 2021-04-03 12:10 王清河 阅读(942) 评论(0) 推荐(0) 编辑
摘要:在刷题的时候,很多时候给一个数组,需要建一个简单的二叉树 #include<iostream> #include<vector> #include<queue> using namespace std; struct TreeNode{ int val; TreeNode *left; TreeNo 阅读全文
posted @ 2021-03-30 14:58 王清河 阅读(430) 评论(0) 推荐(0) 编辑
摘要:在数字和字符串相互转换的过程中,借助这两个库函数的使用将是非常简单的 char str[100] = {}; sprintf(str, "%d", 100); //将 数字 100 写入到字符串 str 中 int a; sscanf(str, "%d", &a); //将 str 的内容 写入到 阅读全文
posted @ 2020-10-08 10:04 王清河 阅读(126) 评论(0) 推荐(0) 编辑
摘要:背景: C++ peimer 第七章第二小节的代码 如果在同一个文件中编译没问题,但是如果分发到 .hpp 和 .cpp 两个文件中,就会出现 error 2019 的错误 把内联的几个 inline 去掉后,就可以编译编译成功。此处是问题一,这个内联定义影响到了C++编译期链接中间函数名,这个是为 阅读全文
posted @ 2020-07-23 14:25 王清河 阅读(846) 评论(0) 推荐(0) 编辑

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