
C++
文章平均质量分 71
ox0080
纵浪大化中,不喜亦不惧。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go vs Rust vs C++ vs Python vs Java:谁主后端沉浮
Rust、C++、Go、Python、Java 对比原创 2025-03-14 11:19:16 · 1318 阅读 · 0 评论 -
C++ 内存泄漏案例分析
内存泄漏分析原创 2025-02-12 01:31:56 · 1091 阅读 · 0 评论 -
C++11 新特性解析
C++11 特性介绍原创 2025-02-12 00:26:09 · 814 阅读 · 0 评论 -
C++14 新特性解析
C++14 特性介绍原创 2025-02-12 00:05:57 · 579 阅读 · 0 评论 -
C++17 新特性解析
C++17 特性介绍原创 2025-02-11 23:43:00 · 973 阅读 · 0 评论 -
C++20 新特性解析
C++20 特性介绍原创 2025-02-11 19:29:20 · 903 阅读 · 0 评论 -
C++23 新特性解析
C++23 特性介绍原创 2025-02-11 19:00:04 · 358 阅读 · 0 评论 -
C/C++语言宏的用法
C/C++宏的使用:1. 防止多重包含 2. 条件编译 3. 定义字面值常量 4. 定义为函数 5. 可变参数宏 6. 宏组合 6.1 一般用法 6.2 当宏参数是另一个宏的时候 6.2.1 非'#'和'##'的情况 6.2.2 当有'#'或'##'的时候 6.3 '#'和'##'的一些应用特例 6.3.1 合并匿名变量名 6.3.2 填充结构 ...原创 2018-07-28 17:40:02 · 1603 阅读 · 0 评论 -
static关键字与内存
为什么要引入static?函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。伴随着不...原创 2018-06-23 11:42:48 · 241 阅读 · 0 评论 -
指针辨析
指针是什么?任何程序数据载入内存后,在内存都有它们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。因此:指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。一 指针数组(存放指针的数组)与数组指针(指向数组的指针)指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它...原创 2018-11-03 13:44:03 · 234 阅读 · 0 评论 -
柔性数组(变长数组)介绍
柔性数组原创 2024-03-12 08:44:10 · 356 阅读 · 0 评论 -
C++ AES/Base64加密算法
AES (Advanced Encryption Standard) 和 Base64 是两个常见的加密和编码技术。原创 2021-03-24 23:55:27 · 854 阅读 · 0 评论 -
C++ Debug/Log(史上最简易)
spdlog, 日志,调试原创 2021-03-23 22:47:01 · 2101 阅读 · 0 评论 -
散列函数效率对比(BKDR VS MD5)
BKDRHash 和 MD5Hash 都是常见的哈希算法,但它们的原理、用途和性能有所不同。原创 2020-10-25 16:40:27 · 593 阅读 · 0 评论 -
C++特性汇总(C++面试必知必会)
C++特性,C++面试宝典原创 2020-10-12 01:38:18 · 233 阅读 · 1 评论 -
json11入门教程
Json11,C++ 解析json原创 2020-09-30 17:57:21 · 670 阅读 · 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 · 890 阅读 · 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 · 4953 阅读 · 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 · 702 阅读 · 0 评论 -
温习C++友元
友元函数和友元类类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。为什么要使用友元函数运算符重载的某些场合需要使用友元。(略)两个类要共享数据:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。友元函数的优缺点优点:方便缺点:原创 2020-05-22 19:26:45 · 230 阅读 · 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 · 423 阅读 · 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 · 472 阅读 · 0 评论 -
C++异步定时事件
异步std::async,std::futureC++标准库提供std::async ,std::future,两个高级接口。async() ,使一个callable object,在后台运行成为一个独立线程。class future<> ,允许等待线程结束获取其返回结果(返回值也可能是一个异常)。#include <iostream>#include <...原创 2019-12-06 11:42:40 · 787 阅读 · 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 · 4592 阅读 · 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 · 267 阅读 · 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 · 465 阅读 · 0 评论 -
c++单例模式
一、懒汉模式即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.但是使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式:class Singleton ...原创 2019-11-25 19:43:21 · 365 阅读 · 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 · 136 阅读 · 0 评论 -
CMake install
CMake Install原创 2019-11-20 10:33:03 · 1510 阅读 · 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 · 723 阅读 · 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 · 117 阅读 · 0 评论 -
Effective C++ item 6
条款6:若不使用编译器自动生成的函数,该明确拒绝方法1 对应成员函数声明为private并且不加以实现2 使用delete明确删除原创 2019-10-28 12:46:09 · 138 阅读 · 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 · 188 阅读 · 0 评论 -
Effective C++ item 4
条款四:确定对象使用前已经优化多个编译单元,non-local-static 对象产生时机不能确定的问题。三点建议:- 为内置对象进行手工初始化,因为C++不保证初始化它们- 构造函数最好使用初始化列表,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排序次序应该和他们在class中声明次序相同。- 为避免“编译跨单元初始化次序”的问题,应该以local static 对象...原创 2019-10-25 17:22:36 · 152 阅读 · 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 · 268 阅读 · 0 评论 -
Effective C++:item 1
条款 01: 视C++为一个语言联邦C包括语法,数据类型,内存,指针,宏不包括模板,对象,异常,重载Object-Oriented C++C with Class,面向对象,class,构造,析构,继承,封装,多态,虚函数Template C++模板(可变参数…),泛型编程,模板元编程STL包括容器,迭代器,算法,函数对象,仿函数...原创 2019-10-25 14:06:20 · 161 阅读 · 0 评论 -
C++之八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。#include <stdio.h>#include <math.h>#include <iostream>using...原创 2018-10-13 04:55:13 · 1251 阅读 · 0 评论 -
C/C++中static再探讨
1. C 语言中的static内存布局:初始化数据段---.data段通常将此段称为数据段,它包含了程序中需赋初值的变量。初始化 的全局变量和静态变量存放在这里 。例如,C程序中任何函数之外的说明:int maxcount = 99; 使此变量以初值存放在初始化数据段中。a.初始化的全局变量b.初始化的静态变量非初始化数据段---.bss段通常将此段称为bss段,这一名称来源...原创 2018-11-03 15:18:39 · 180 阅读 · 0 评论 -
剑指offer____二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { ...原创 2018-11-06 11:46:57 · 140 阅读 · 0 评论 -
剑指offer____替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if (str == NULL||length ...原创 2018-11-06 11:55:30 · 216 阅读 · 0 评论