C++
momomo_mocs
这个作者很懒,什么都没留下…
展开
-
boost::any + std::shared_ptr结合使用
【代码】boost::any + std::shared_ptr结合使用。原创 2023-12-27 16:53:51 · 432 阅读 · 0 评论 -
带模板参数函数指针_作为_函数入参
#include "boost/algorithm/string.hpp"#include <functional>#include <iostream>#include <string>#include <unordered_map>#include <unordered_set>// template <typename DstType>// int (*Handler)(const char*, size_t, .原创 2020-11-24 10:53:19 · 493 阅读 · 0 评论 -
C++异常记录
1.terminate called without an active exception原因:主线程结束,对象资源释放,导致子线程拿到非法资源解决办法:主线程join等待子线程2.basic_string::_S_create异常如下代码导致std::vector<std::string> tmp_vec_set;for (int i = 0; i < 800; ++i) { tmp_vec_set[0] += ("dcsaasdasdcrwq...原创 2020-10-24 16:59:37 · 640 阅读 · 0 评论 -
为什么只有指针能够完成多态
本质是:对象中指向VirtualTable的指针是否发生变化VirtualTable是在编一阶段生成的,该指针初始化时指向对象所实现的类的VirtualTable。Base基类,Derived派生类void fun(Base a); 将Derived b传入时,首先发生了b的向上转型,然后发生了值拷贝,vptr发生了改变,多态失败。void fun(Base* a) 将Derived * b传入时,发生b的向上转型和拷贝,但是地址变量的转型和拷贝不改变vptr的指向,vptr指向得以保留原创 2020-09-29 14:30:57 · 256 阅读 · 1 评论 -
rapidJson使用
1.官方文档:http://rapidjson.org/zh-cn/md_doc_tutorial_8zh-cn.html#CreateString2.添加元素rapidjson::Document document; rapidjson::Document::AllocatorType& alloc = document.GetAllocator(); rapidjson::Value json_normal(rapidjson::Type::kObjectType原创 2020-09-27 17:04:52 · 649 阅读 · 0 评论 -
gflags
1.背景介绍 2.使用方法 (1)支持的数据类型 (2)使用方式 (3)flags导入方式 (4)gflags参数加载 (5)gflags参数修改 (6)一些特殊的gflags参数 (7)补充说明 3.gflags在搜索系统中的应用 1.gflags加载 2.应用 1.背景介绍google开源的gflags是一套命令行参数解析工具,比getopt功能更强大,使用起来更加方便,gflags支持从命令行参数、环境变量以及配置文件读取参数。同时,可以在单个源代...原创 2020-07-16 19:18:25 · 419 阅读 · 0 评论 -
C中的#和##
#是在宏定义中将参数进行字符串化的预处理特征##是连接符https://www.cnblogs.com/castor-xu/p/12822802.html原创 2020-07-04 19:56:09 · 211 阅读 · 0 评论 -
Linux共享库的搜索路径先后顺序
1、编译目标代码时指定的动态库搜索路径:在编译的时候指定-Wl,-rpath=路径2、环境变量LD_LIBRARY_PATH指定的动态库搜索路径3、配置文件/etc/ld.so.conf中指定的动态库搜索路径4、默认的动态库搜索路径/lib5、默认的动态库搜索路径 /usr/libLD_LIBRARY_PATH的导入可以放在/etc/profile里# 例exportLD_LIBRARY_PATH="/usr/local/lib"...原创 2020-05-31 10:36:27 · 387 阅读 · 0 评论 -
boost::scope_lock,boost::shared_lock,boost::unique_lock
1.boost::scope_lock严格基于作用域(scope-based)的锁管理类模板,构造时是否加锁是可选的(不加锁时假定当前线程已经获得锁的所有权),析构时自动释放锁,所有权不可转移,对象生存期内不允许手动加锁和释放锁2.boost::shared_lock,boost::unique_lock shared_lock是read lock。被锁后仍允许其他线程执行同样被shared_lock的代码。这是一般做读操作时的需要。 unique_lock是writelock。被...原创 2020-05-18 21:57:00 · 576 阅读 · 0 评论 -
代码问题检查工具
1.静态检查工具https://www.cnblogs.com/wanhuan/p/5764306.htmlcppcheck 安装https://blog.csdn.net/u012053377/article/details/81209816 使用2.动态检查工具Linux下内存检测工具:asanhttp://www.cppblog.com/markqian86/archiv...原创 2020-05-06 21:20:16 · 482 阅读 · 0 评论 -
iterator_traits
https://www.cnblogs.com/dmq5488287/articles/2841341.html原创 2020-05-01 23:00:08 · 197 阅读 · 0 评论 -
C++操作符重载
原创 2020-04-24 22:34:28 · 224 阅读 · 0 评论 -
CentOS升级gcc
https://www.vpser.net/manage/centos-6-upgrade-gcc.html原创 2020-04-19 19:01:55 · 142 阅读 · 0 评论 -
not1,not2,bind1st和bind2nd用法
https://www.cnblogs.com/blueoverflow/p/4737122.html原创 2020-04-18 22:45:53 · 508 阅读 · 0 评论 -
STL之pair
1、头文件 #include <utility>2、代码 // 使用默认构造函数得到的pair, 使用前必须赋值 std::pair<std::string, int64_t> pair_tmp = {"ma", 123}; std::cout << pair_tmp.first << "->" ...原创 2019-11-23 18:14:38 · 242 阅读 · 0 评论 -
Effective C++ 学习笔记
注:学习侯捷老师翻译的Effective C++T2:e.g:// 将a和b中的较大值,传入f#define CALL_WITH_MAX(a, b) f((a) > (b) ? (a) : (b))以上写法,对于如下使用方式会存在问题:int a = 3, b = 0;CALL_WITH_MAX(++a, b); // a被加了两次CALL_WIT...原创 2019-11-02 18:12:22 · 347 阅读 · 0 评论 -
const 成员函数
如果1处加了const修饰但是2处未加const修饰那么,在3处调用时,会报错(const对象,不能调用非const成员函数)const 对象,代表该对象对应的成员变量不能被改变,const成员函数,代表该函数不会改变成员变量的值在const成员函数里,&m_member也会是const类型的指针...原创 2019-10-27 17:28:33 · 1536 阅读 · 0 评论 -
Boost库记录
1、C++正则表达式(regex_match、regex_search与regex_replace)https://blog.csdn.net/qq_34802416/article/details/79307102#3_regex_search_56大部分Boost库无需动态或静态编译链接,小部分如regex thread coroutine之类的库在编译自己的源代码时需要...原创 2019-10-20 22:32:09 · 254 阅读 · 0 评论 -
简单智能指针的实现
直上代码,大佬忽略#include <iostream> #include <string>using namespace std; //定义智能指针模板类template<typename T>class SmartPointer{private: T* m_sPointer;public: SmartPointer(const ...原创 2018-08-11 09:12:10 · 255 阅读 · 0 评论 -
C++ socket UDP网络编程(简单聊天室)
0.通信步骤流程图(左:服务器;右:客户端;)1.服务器代码1.1服务器类头文件(CServer_UDP.h)#pragma once#include <winsock2.h>class CServer_UDP{public: CServer_UDP(); void SendMsg(const char sendBuf[]); void Rec...原创 2019-04-10 17:09:24 · 6704 阅读 · 0 评论 -
C++ socket TCP网络编程
0.通信步骤流程图(左:服务器;右:客户端;)1.服务器代码1.1 服务器类头文件(CServer_Wins.h)#pragma once#include <winsock2.h>class CServer_Wins{public: CServer_Wins(); void RecMsg(); void stopRec(); ~CServer_Wi...原创 2019-04-09 20:09:26 · 5430 阅读 · 7 评论 -
STL之list双向循环链表
一、头文件<list>二、功能:模板形式的 双向循环链表数据结构三、定义方式list<元素的数据类型> 变量名; e.g: list<int> list_var;四、常用成员函数用法1、void push_back(const T& var); 功能:插入一个节点作为尾结点e.g: list<int>...原创 2019-06-18 22:39:24 · 2671 阅读 · 0 评论 -
STL之vector容器(序列式容器)
一、头文件<vector>二、迭代器示意(截图自侯捷老师的《STL源码剖析》)三、成员函数1.iterator begin()2.iterator end()3.size_type size()4.size_type capcity()5.bool empty()6.reference front() //第一个元素7.reference ba...原创 2019-07-27 18:52:51 · 217 阅读 · 0 评论 -
C++智能指针类
//本文内容,来自 《C++ Primer》中文版,第五版一、shared_ptr类1、初始化shared_ptr<string> p1; e.g if(p1 && p1->empty()) *p1="hi";shared_ptr<list<int>> p2;...原创 2019-09-28 19:31:46 · 198 阅读 · 0 评论 -
C++随笔
1、new一般情况下,如果new为申请到空间(内存耗尽的情况下),会抛出一个bad_alloc异常通过nothrow可以阻止其抛出异常,用法如下:char *p2 = new (nothrow)char; // 申请失败后,会返回nullptr,不会抛异常2、利用using代替typedefusing FunctionPtr = void (*)(); //相当于 typ...原创 2019-10-03 22:36:23 · 421 阅读 · 1 评论 -
std::move 和 std::swap
1、swap的实现是基于move的(自己实现的)template<typename T>void swap(T &a,T &b) noexcept{ T temp = std::move(a); a = std::move(b); b = std::move(temp);}2、移动构造和移动赋值操作符重载#include &...原创 2019-09-30 16:16:07 · 1350 阅读 · 0 评论 -
二叉树遍历 - 循环方式
直接上代码:先序遍历-循环形式, 结果保存到 vector<int> data中struct TreeNode { int val; TreeNode *left; TreeNode *right; };//先序遍历void preTravel(TreeNode* root, vetcor<int>& data)...原创 2018-08-10 10:44:02 · 293 阅读 · 0 评论