![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
ox0080
surprise
展开
-
柔性数组(变长数组)介绍
柔性数组原创 2024-03-12 08:44:10 · 227 阅读 · 0 评论 -
C++ AES/Base64加密算法
????????????????????????♀️????♂️????♀️????♂️????????????????????????✌????????????????????????????????????????✨????????????????????????????????base64编码&解码std::string base64_encode(const std::string &str);std::string base64_decode(const原创 2021-03-24 23:55:27 · 545 阅读 · 0 评论 -
C++ Debug/Log(史上最简易)
<font>scs<\font>#pragma once#include <iostream>#include <cstring>#define LOGGING(...) \ { \原创 2021-03-23 22:47:01 · 1724 阅读 · 0 评论 -
散列函数效率对比
????????????????????????♀️????♂️????♀️????♂️????????????????????????✌????????????????????????????????????????✨????????????????????????????????????????????????????????♀️????♂️????♀️????♂️????????????????????????✌?????????????????????????????原创 2020-10-25 16:40:27 · 437 阅读 · 0 评论 -
C++知识
????????????????????????♀️????♂️????♀️????♂️????????????????????????✌????????????????????????????????????????✨????????????????????????????????????????????????????????♀️????♂️????♀️????♂️????????????????????????✌?????????????????????????????原创 2020-10-12 01:38:18 · 159 阅读 · 1 评论 -
json11入门教程
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨1.jsonJSON(JavaScript Object Notation) 是一种轻量级的文本数据交换格式,易于让人阅读。同时也易于机器解析和生成。尽管 JSON 是 Javascript 的一个子集,但 JSON 是独立于语言的文本格式,并且采用了类似于 C 语言家族的一些习惯。JSON 解析器和 JSON 库支持许多不同的编程语言。几乎所有与网页开发相关的语言都有 JSON 库。JSON 比 XML 更小、更快。?原创 2020-09-30 17:57:21 · 567 阅读 · 0 评论 -
BOOST_PP_SEQ_FOR_EACH boost宏
宏展开结构体预定义struct ExperimentMapping { tsl::robin_map<std::string, std::string> unitmap; FileWatchInfo watch_info; void insert(const string &key,const ml::utilities::StringTokenizer &tok) { if (tok.Size() >= 2) {原创 2020-09-27 15:58:12 · 732 阅读 · 0 评论 -
PyTorch C++ ---C++17重编libtorch
libtorch (PyTorch C++)根据系统(Win/Mac/Linux)和GPU/CUDA(version) 选择install 之后就可通过Cmake find_package 直接使用,但是默认编译libtorch 为 C++14,如果和其他 C++17 编译得到的库共同链接到项目,就可能产生一系列问题:如下图,原因是先链接 C++14 编译的torch,会将编译设为 C++14,再去链接C++17的库,就无法识别C17加入标准库的内容,编译报错。实际上先链接C++17 的其他库,再链接 to原创 2020-07-31 11:16:25 · 3628 阅读 · 0 评论 -
C++ 函数返回多个值
参考知乎某大佬#include <optional>#include <string>#include <iostream>#include <variant>#include <type_traits>#include <tuple>#include <any>// C++ return multiple value// 1.returned value,reference parameterboo原创 2020-05-28 13:01:52 · 633 阅读 · 0 评论 -
温习C++友元
友元函数和友元类类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。为什么要使用友元函数运算符重载的某些场合需要使用友元。(略)两个类要共享数据:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。友元函数的优缺点优点:方便缺点:原创 2020-05-22 19:26:45 · 166 阅读 · 0 评论 -
linux系統安裝boost库及使用
boost::asio网络库编译安装教程boost 库安装教程使用server#include <boost/system/error_code.hpp>#include <iostream>#include <boost/asio.hpp>#include <chrono>#include <ctime>#inclu...原创 2020-01-09 17:35:32 · 352 阅读 · 0 评论 -
Seastar不能使用引用蒱获的原因
seastar::future<int> incr(int i) { using namespace std::chrono_literals; // Oops, the "&" below is wrong: return seastar::sleep(10ms).then([&i] { return i + 1; });}i 是一个栈变...原创 2019-12-23 11:57:43 · 407 阅读 · 0 评论 -
C++异步定时事件
异步std::async,std::futureC++标准库提供std::async ,std::future,两个高级接口。async() ,使一个callable object,在后台运行成为一个独立线程。class future<> ,允许等待线程结束获取其返回结果(返回值也可能是一个异常)。#include <iostream>#include <...原创 2019-12-06 11:42:40 · 709 阅读 · 0 评论 -
C++ 实现then,lambda链式调用
lambda 链式调用C++11支持lambda和function,在一些延迟计算的场景下,这个链式调用的需求更加强烈。链式调用的目的是,将多个函数按照前一个的输出作为下一个的输入串起来,然后推迟到某个时刻再计算。C++中链式调用比较少见,因为实现比较复杂。template<typename T>class Task;template<typename R,typenam...原创 2019-12-06 10:51:19 · 3930 阅读 · 0 评论 -
std::vector扩容验证以及删除操作
#include <vector>#include <iostream>#include <algorithm>#include <cstdlib>#include <iterator>void capacity_increase(){ std::vector<int> vec; std::cou...原创 2019-12-05 19:22:08 · 201 阅读 · 0 评论 -
GDB调试core与multi-threads
debug modle 下build项目应该使用-g参数:g++ -g sample.cpp -o sample两种方式去进入gdb调试:Start the debugging with exectuable name i.e(shell) gdb Sample2)Start gdb alone i.egdb(gdb) file Sample 通过命令行参数去传递参数到...原创 2019-11-28 15:39:12 · 375 阅读 · 0 评论 -
c++单例模式
一、懒汉模式即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.但是使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式:class Singleton ...原创 2019-11-25 19:43:21 · 309 阅读 · 0 评论 -
Effective C++ item 6
条款 6 :使用delete 明确拒绝编译器自动生成函数method 1将成员函数声明为private并且不予实现,无法显示调用可以使得编译器无法编译.method 2继承private修饰的copy construct以及operator,在derive类中就可以不需要任何设计,同时会拒绝使用默认的copy construct以及operator函数.medthod 3将要...原创 2019-11-24 20:41:59 · 95 阅读 · 0 评论 -
CMake install
转载链接CMake InstallINSTALL && LIBRARYINSTALL:cmake 指令 INSTALL和一个非常有用的变量CMAKE_INSTALL_PREFIX。CMAKE_INSTALL_PREFIX变量类似于configure脚本的 –prefix,常见的使用方法:cmake -DCMAKE_INSTALL_PREFIX=/usr.INSTALL指...原创 2019-11-20 10:33:03 · 1272 阅读 · 0 评论 -
std::function和std::bind绑定器
C++11中std::function and std::bind1. 可调用对象C++中可调用对象的概念,有以下几种定义:1) 是一个函数指针2) 是一个具有operator()成员函数的类对象3) 是一个可被转换为函数指针的类对象4) 是一个类成员(函数)指针void fun(void){ //...}struct Foo{ void operator()(vo...原创 2019-10-29 20:17:48 · 604 阅读 · 0 评论 -
Effective C++ item 7&8&9
条款7,8,8 :析构函数篇1.为基类申明virtual析构函数remember:1.1 base class 应该申明一个virtual析构函数。如果有class带有人任何virtual函数,它就应该带有一个virtual函数。1.2 class 的设计目的中未考虑作为base class使用,不应该存在virtual函数,否则会有vptr额外的开销。2.析构函数中处理异常remem...原创 2019-10-28 15:06:14 · 79 阅读 · 0 评论 -
Effective C++ item 6
条款6:若不使用编译器自动生成的函数,该明确拒绝方法1 对应成员函数声明为private并且不加以实现2 使用delete明确删除原创 2019-10-28 12:46:09 · 91 阅读 · 0 评论 -
Effective C++ item 5
条款5 :了解C++默默编写调用了那些函数calss A{ public: A() = default; //empty 类会自动创建,显示声明构造时,编译器不会自动添加 A(std::string a,std::string b){} private: std::string aa; std::string bb; };int main(){ A a("abc","123...原创 2019-10-28 12:29:49 · 136 阅读 · 0 评论 -
Effective C++ item 4
条款四:确定对象使用前已经优化多个编译单元,non-local-static 对象产生时机不能确定的问题。三点建议:- 为内置对象进行手工初始化,因为C++不保证初始化它们- 构造函数最好使用初始化列表,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排序次序应该和他们在class中声明次序相同。- 为避免“编译跨单元初始化次序”的问题,应该以local static 对象...原创 2019-10-25 17:22:36 · 103 阅读 · 0 评论 -
Effective C++ item 2&3
条款2,3:使用const1. const 和 pointerchar p[] = {"1233"};const char* ptr = p;const char* str = "awk";其中str指向字符串常量,存储在代码段,ptr指向数据段。const 修饰不能通过指针修改所指之物。但是指针的指向可以修改。char s[] ={"5678"};ptr = s; //上述指针...原创 2019-10-25 15:58:04 · 170 阅读 · 0 评论 -
Effective C++:item 1
条款 01: 视C++为一个语言联邦C包括语法,数据类型,内存,指针,宏不包括模板,对象,异常,重载Object-Oriented C++C with Class,面向对象,class,构造,析构,继承,封装,多态,虚函数Template C++模板(可变参数…),泛型编程,模板元编程STL包括容器,迭代器,算法,函数对象,仿函数...原创 2019-10-25 14:06:20 · 103 阅读 · 0 评论 -
剑指offer____求1+2+3+...+n
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。int Sum_Solution(int n) { int sum = n; sum && (sum += Sum_Solution(n - 1)); return sum; }...原创 2018-11-10 10:56:24 · 82 阅读 · 0 评论 -
剑指offer____表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。class Solution {public:原创 2018-11-15 13:10:33 · 129 阅读 · 0 评论 -
剑指offer____正则表达式匹配
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配class Solution {public: /* 思路 如果模式串此时是...原创 2018-11-15 13:08:30 · 154 阅读 · 0 评论 -
剑指offer____构建乘积数组
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 方法一:前后分离相乘class Solution {public: vector<int> multiply(const vector<int>&...原创 2018-11-15 13:06:40 · 117 阅读 · 0 评论 -
剑指offer____数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解法一:原地寻找法 class Solution {public: bool duplicate(int nu...原创 2018-11-15 12:37:32 · 124 阅读 · 0 评论 -
剑指offer____把字符串换成整数
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0 class Solution {public: ...原创 2018-11-15 10:59:39 · 116 阅读 · 0 评论 -
剑指offer____不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。方法一:位运算class Solution {public: int Add(int num1, int num2) { /* if(num2 == 0) return num1; int sum = num1 ^ num2; ...原创 2018-11-15 10:57:19 · 119 阅读 · 0 评论 -
C++隐式构造与显式构造
<一>class Stock{private: string _company; long _share; double _val;};C++提供了两种使用构造函数来初始化对象的方法。第一种是显式的调用构造函数:Stock food = Stock("hello",12,20.5);这将food对象的_company成员设置为字符...原创 2018-11-16 17:07:37 · 8428 阅读 · 6 评论 -
剑指offer____机器人的运动范围
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? class Solution {public...原创 2018-11-16 13:56:43 · 123 阅读 · 0 评论 -
剑指offer____矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个...原创 2018-11-16 13:53:43 · 105 阅读 · 0 评论 -
网络通信序列化____json使用教程
网络传输中,牵扯到数据序列化,反序列化。其实,通信双方约定好序列化方式(大端/小端)即可。例如发送方按照大端序列化,接收端在接收到数据后,接收端判断自己的大小端模式,如果自己的CPU是大端模式,则不需要做大小端转换,直接进行数据解析即可。如果是小端,则解析完后还需要将数据转为小端模式。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传...原创 2018-11-22 15:00:56 · 844 阅读 · 0 评论 -
C++创建线程池
池:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程...原创 2018-11-17 12:32:33 · 1482 阅读 · 0 评论 -
C++中空类详解
1、空类,声明时编译器不会生成任何成员函数 对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。 有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:一个缺省的构造函数、一个拷贝构造函数、一个析构函数、一个赋值运算符、一对取址运算符和一个this指针。 代码:#include <io...原创 2018-11-17 21:25:24 · 10190 阅读 · 4 评论 -
C++新特性学习
1 容器库1.1 std::array定义于头文件 <array>template< class T, std::size_t N > struct array;std::array 是std::vector的一个弱化,是封装固定大小数组的容器。在初始化时就必须指定大小,且不会动态增长;其分配的空间是栈上的数组,而不是堆上。eg1...原创 2019-07-23 10:26:05 · 783 阅读 · 0 评论