首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++与Linux的学习之路

    C++模板扩展

    C++模板扩展 非类型模板参数 模板的特化 函数模板的特化 类模板的特化 非类型模板参数 模板参数中不是只有类型的,非类型的模板参数,该参数类型是整形,浮点数等不可以。

    63100编辑于 2023-03-28
  • 来自专栏C语言

    C++】继承和多态扩展学习

    菱形虚拟继承原理剖析 继承的文章中我们讲到C++的多继承就会引发一些场景出现菱形继承,有了菱形继承,就会出现数据冗余和二义性的问题,C++又引入了虚继承来解决数据冗余和二义性。 C++ 虚函数表解析 2. C++ 对象的内存布局 class A { public: virtual void func1() {} public: int _a; }; class B : virtual public C++菱形继承的问题?虚继承的原理?答:参考前面继承文章。注意这里不要把虚函数表和虚基表搞混了。 11. 什么是抽象类?抽象类的作用?

    21600编辑于 2025-07-23
  • 来自专栏有文化的技术人

    使用 C 或 C++ 扩展 Python

    为了支持扩展,Python API(应用程序编程接口)定义了一系列函数、宏和变量,可以访问 Python 运行时系统的大部分内容。 扩展模块的编写方式取决与你的目的以及系统设置;下面章节会详细介绍。 注解:C扩展接口特指CPython,扩展模块无法在其他Python实现上工作。在大多数情况下,应该避免写C扩展,来保持可移植性。 查看 提取扩展函数的参数 来了解这个宏的更多内容。 除了那些已经定义在头文件中的之外,所有用户可见的符号都定义在 Python.h 中,并拥有前缀 Py 或 PY 。

    1.7K22编辑于 2022-10-27
  • 来自专栏程序手艺人

    C++之函数参数的扩展

    函数参数的默认值 C++中可以在函数声明时为参数提供一个默认值 当函数调用时没有提供参数的值,则使用默认值 参数的默认值必须在函数声明中指出 int mul(int x = 0); int main(int x = 0; y = 1; z = 2 add(2,3); // x = 2; y = 3; z = 2 add(3,2,1); // x = 3; y = 2; z = 1  函数占位参数 在C+ 函数占位参数的意义 占位参数与默认参数结合起来使用 兼容C语言程序中可能出现的不规范写法 //下面的两种方式是否等价 void func(); <--> void func(void); 小结 C+ + 中支持函数参数的默认值 如果函数调用时没有提供参数值,则使用默认值 参数的默认值必须从右向左提供 函数调用时使用了默认值,则后续参数必须使用默认值 C++中支持占位参数,用于兼容C语言中的不规范写法

    1.2K110发布于 2018-05-18
  • 来自专栏醉梦轩

    Python中使用MinGW编译C++扩展

    Python中可以使用 python setup.py build -c mingw32 install 安装包含C++扩展的第三方库,但需要先安装MinGW 5.1.4及以后版本,并将C:\MinGW

    1.6K30发布于 2018-07-06
  • 来自专栏我的机器学习之路

    使用C++编写Python3扩展

    Python的很多库中都包含了C/C++的代码,在安装这种库的时候,尝尝会遇到这样的报错: error: unable to find vcvarsall.bat 通常的解决方案有两种: 安装visual 一般大家都会选择安装编译过的库文件,或者安装mingw,但是如果要在Windows下为自己的Python程序编写扩展,安装visual studio是最优的解决方案。 下面介绍使用C++编写Python扩展模块的常见写法。 PyMethodDef ModuleMethods[]数组 static PyMethodDef ExtenMethods[] = { // add:可用于Python调用的函数名,Exten_add:C+ 代码中调用: >>> import Exten >>> Exten.add(1,3) 4 传入可迭代对象 这种方式只能处理单个数据传入的任务,如果需要处理批量数组等批量数据,则需要涉及到Python对象到C+

    1.2K40发布于 2020-10-23
  • 来自专栏H2Cloud

    C++使用ffpython嵌入和扩展python

    使用python和C++结合的技术拥有如下优势: l  主体系统使用C++实现,保持系统的高效。 l  Python中的数据结构与C++的有很大不同。Python常用的有tuple,list,dict。而c++常用的事vector,list,map,并且c++是强类型的。 当c++与python进行交互时,C++层希望操作python数据结构就像操作c++ STL一样方便,而在python脚本层,又希望c++传入的参数或返回值都是原生的python数据 l  C++中常用的指针传递对象 Ffpython是专门方便C++嵌入python开发的类库,基于ffpython一方面可以轻松的将python集成到C++系统,另一方面,C++对象或接口也可以很容易被python使用,总之ffpython catch(exception& e) { printf("exception traceback %s\n", e.what()); } 扩展

    1.6K40发布于 2018-03-09
  • 来自专栏我的博客

    C++】26. 哈希扩展1—— 位图

    位图通常提供以下核心接口: set(x):将第x位置1 reset(x):将第x位置0 test(x):检测第x位是否为1 在C/C++实现中需要特别注意,由于没有直接的bit数据类型,我们需要使用整数类型 cout << bs.test(33) << endl; cout << bs.test(34) << endl; cout << bs.test(35) << endl; } 运行结果: 1.4 C+

    13010编辑于 2025-12-22
  • 来自专栏黯羽轻扬

    Node.js为什么需要C++扩展

    一.概念 本质上,Node.js 扩展就是 C++动态链接库: Addons are dynamically-linked shared objects written in C++. 这些 C++扩展(xxx.node文件)也能像 JS 模块一样直接require使用,因为Node 模块加载机制提供了原生支持 P.S.所谓动态链接库,就是能在运行时动态加载的库(.so文件,或者 Windows 二.实现方式 在 Node.js 中,编写一个 C++扩展有 3 种方式: 直接手搓:基于 Node、V8、libuv 提供的 C++ API 直接写,但要手动处理这些 API 在不同 Node 版本下的兼容性问题 Node 版本上运行 P.S.实际上,有了 N-API 这层独立抽象之后,C++扩展还能跨 JavaScript 引擎、跨 Electron 等运行时,具体见The Future of Native C++扩展来实现尤为合适: 计算密集型模块,C++的执行性能一般要高于 JS 将现有的 C++类库低成本地封装成 Node.js 扩展,供 Node 生态使用 Node.js 提供的原生能力无法满足需要

    2.8K10发布于 2020-05-22
  • 来自专栏学习之路

    C++ 实践扩展(Qt Creator 联动 Visual Studio 2022)

    :​​​​​Visual Studio 2022 我们先去 Vs 官网下载,如下: 等待程序安装完成之后,如下: 下载安装完成安装器后,自动打开选择窗口,其中选择需要安装的组件,这里我们需要安装C+ 如下: 最后结果就是这样的了 然后我们新建项目来运行程序,结果发现报问题了,如下: 解决办法: 进入配置 然后进入下面就行,操作如下: 三、安装 Qt 插件 方式一:在VS扩展中搜索安装 注意:默认安装的是最新版,而最新版中将原来的项目模板 Qt GUI Application 改为了 Qt Widget Application ① 打开Visual Studio 2022,菜单栏选择【扩展 】,然后选择管理扩展 ② 在打开的扩展和更新窗口中,先选择联机(即在线搜索插件),然后输出查询关键字“qt”,在结果列表中找到“ Qt Visual Studio Tools ”项并点击下载

    4K10编辑于 2025-02-13
  • 来自专栏C++核心编程

    C++内存分区模型分析与实例以及扩展

    内存分区模型C++程序在执行时,将内存大方向划分为5个区域运行前:代码区:存放函数体的二进制代码,由操作系统进行管理的全局区(静态区):存放全局变量和静态变量以及常量常量区:常量存储在这里,不允许修改运行后 函数体外静态变量:函数体内(普通变量前加static)常量:函数体内1.字符串常量2.const修饰的变量 (1)const修饰的全局变量:全局常量 (2)const修饰的局部变量(不在全局区;栈区)总结C+ 堆区分析堆区: 由程序员分配释放,若程序员不释放,程序结束时由操作系统回收 在C++中主要利用new在堆区开辟内存示例int* func(){ int* a = new int(10);//利用new 扩展C语言的内存模型分为5个区:栈区、堆区、静态区、常量区、代码区。 5、代码区:顾名思义,存放代码C++中的new/delete、构造/析构函数、dynamic_cast分析1,new 关键字和 malloc 函数区别(自己、功能、应用): 1,new 关键字是 C+

    1.1K41编辑于 2022-08-04
  • 来自专栏全栈程序员必看

    正确lua简单的扩展,可以加速相关C++数据。

    如果,我在这里C++打开界面脚本。使用C++其中一个目标,和。我的程序有很多不同的lua虚拟机。 每个虚拟机与一个关联C++对象,它是多线程,那么如何快速应利用这个好时机lua_State针来定位到对象指针呢? 曾经我没有能力读懂lua的源代码,也能够说不知道关键部分怎样操作,我当时的做法。 lua_State这个结构指针是要贯穿全部用到lua的地方的,那么我就行对这个结构进行扩展,让它可以保存我的数据,仅仅须要保存一个指针就可以。 function (stack index) */ CallInfo base_ci; /* CallInfo for first level (C calling Lua) */ }; 那么对这个结构扩展之后例如以下 Lua) */ int __mydata;//这里 }; //同一时候添加两个lua接口,能够将函数接口放到lapi.c中,声明放到lua.h中就可以,或者你是发烧追求极限效率不在乎很多其它的扩展和更新的朋友

    73120编辑于 2022-07-06
  • 来自专栏学习

    C++寻位映射的究极密码:哈希扩展

    都上好编号,因为经过相同哈希函数计算,所以 A 和 B 中相同的 query 必定分别进入 Ai 和 Bi 文件中,因此 A0 和 B0 比较,A1 和 B1 进行比较,以此类推即可 3.3.2 问题二 如何扩展 解决方法: 将标准布隆过滤器的每个二进制位扩展为一个小计数器(通常 4-8 位),当插入元素时增加计数器,删除时减少计数器。只有当计数器为 0 时,才表示该位置未被占用

    29210编辑于 2025-05-28
  • 来自专栏H2Cloud

    FFLIB之FFLUA——C++嵌入Lua&扩展Lua利器

    Lua的垃圾回收也可以让C++程序收益匪浅,这也是C++结合脚本技术的重要优势之一。 Lua的扩展也非常的容易,将C++是对象、函数导入到lua中会涉及到一些技巧,如果纯粹使用lua CAPI会稍显繁杂,幸运的是一些第三方库简化了这些操作,而FFLUA绝对是最好用的之一。 扩展LUA: 这也是非常重要的操作,嵌入lua总是和扩展lua相伴相行。lua若要操作C++中的对象或函数,那么必须先把C++对应的接口注册都lua中。 首先我们整理一下需要哪些注册操作: C++ 静态函数注册为lua中的全局函数,这样在lua中调用C++函数就像是调用C++全局函数 C++对象注册成Lua中的对象,可以通过new接口在lua中创建C++ 高级特性: 通过以上的介绍,也许你已经了解了FFLUA的设计原则,即:当在编写C++代码时,希望使用LUA就像使用C++本地的代码一样,而在lua中操作C++的数据和接口的时候,又希望C++用起来完全跟

    2.7K70发布于 2018-03-09
  • 来自专栏微卡智享

    C++ OpenCV特征提取之扩展LBP特征提取

    前言 前面我们学习了《C++ OpenCV特征提取之基本的LBP特征提取》,用的是基本的LBP特征的提取,这次我们接着上次的代码,来看看扩展的ELBP的特征提取。 LBP的扩展介绍 原始的LBP提出后,研究人员不断对其提出了各种改进和优化。 为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求,Ojala等对 LBP 算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的 LBP 算子允许在半径为 R 的圆形邻域内有任意多个像素点 Maenpaa等人又将 LBP算子进行了扩展,提出了具有旋转不变性的 LBP 算子,即不断旋转圆形邻域得到一系列初始定义的 LBP值,取其最小值作为该邻域的 LBP 值。 ? 上图为值为17时 可以看到,扩展的LBP算法比基本的LBP特征提取的更为明显一些。关键代码里面的写法不太好理解,我里面也有一知半解的东西,也是先做了后再研究吧。

    2.7K30发布于 2019-07-24
  • 来自专栏C++核心编程

    C++面向对象封装特性的实例分析与应用扩展(二)

    扩展:#pragma once #pragma once是一个比较常用的C/C++预处理指令,只要在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次。 在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性,通常有两种方式—— 第一种是#ifndef指令防止代码块重复引用 第二种就是#pragma once指令,在想要保护的文件开头写入 在C/C++中,#pragma once是一个非标准但是被广泛支持的方式。 #pragma once方式产生于#ifndef之后。 #ifndef方式受C/C++语言标准的支持,不受编译器的任何限制;而#pragma once方式有些编译器不支持(较老编译器不支持,如GCC 3.4版本之前不支持#pragmaonce),兼容性不够好

    44830编辑于 2022-08-10
  • 来自专栏C++核心编程

    C++面向对象封装特性的实例分析与应用扩展(一)

    抽象往往是用户定义类型的捷径,在C++中用户定义类型指的就是实现抽象接口的类设计。 封装是C++面向对象三大特性之一。 //私有权限类外访问不到 system("pause"); return 0; } 类与结构的区别 引入: 类描述上像是包含成员函数以及public和private可见标签的结构声明,实际上C+ +对结构进行了扩展,使之具有与类相同的特性,他们只有唯一的区别是默认的访问权限不同。 关键区别: 在C++中 struct和class唯一的区别就在于 默认的访问权限不同 struct 默认权限为公共 class 默认权限为私有 应用场景: C++程序员通常使用类来实现类描述,而把结构限制为只表示纯粹的数据对象 代码详解请见(二) 专业扩展 什么是接口,以及接口与类的关系: 接口是一个共享框架,供两个系统交互时使用,对于类,我们说公共接口。

    51620编辑于 2022-08-10
  • 来自专栏Pou光明

    扩展和嵌入Python之C++程序中嵌入Python解释器

    貌似和python结下了不解之缘,最近主要在做python的扩展和嵌入。 在正式写代码之前,先唠叨几句环境的搭建。当时搭建环境的时候也是费了一番辛苦。 【叹气】 在嵌入和扩展Python时,需要调用python的c api,则需要包含Python.h,若想成功的将其包含,需要安装python dev。

    2.1K31发布于 2019-07-30
  • 来自专栏Java

    扩展与位扩展

    扩展与位扩展 简介:本文以最通俗易懂的语言来教会大家,如果快速学会字扩展与位扩展的题目 位扩展 具体题目举例子 以这个题为例子,比如32K x 8,32K属于字,8属于位,这里的位扩展就是把8变成了 字扩展 具体题目举例子 以这题目为例子,用32K x 8到128K x 8,然后32K->128K,215->217,增加了两位,所以上图的A16-15才会指向上面,这两位就是新增给编译器的,就是编译器中的 2的来源,然后这4就是扩展了4倍, 所以上面的编译器就是2-4,然后最右边的挡住的部分是A14-0长度为15,扩展之后的长度,由于位是8,所以下面的D为D7~D0,再由于是字扩展,所以下面的每块都一样

    59510编辑于 2025-01-21
  • 来自专栏C语言学习

    C++篇】哈希扩展:位图和布隆过滤器+哈希切割

    所谓位图,就是用内存的每个比特位来存放某种状态, 适用于海量的整数数据,通常是用 来判断某个数据存不存在。

    27210编辑于 2025-08-11
领券