【在C++工程中设置全局函数】教程文章相关的互联网学习教程文章

【C++】__gcd(x,y)函数【代码】

无意间发现个有用的函数 __gcd(x,y)函数 用于求x,y的最大公约数。x,y不能是浮点数 头文件:#include< algorithm> #include<iostream> #include<algorithm> using namespace std; int main() {int a,b;cin>>a>>b;cout<<__gcd(a,b)<<endl; }其他求最大公约数的方法 1、循环 int gcd(int x,int y) {int r;while (a%b!=0){r=a%b;a=b;b=r; }return b; }int gcd(int a,int b) {return b>0 ? gcd(b,a%b):a; }2、递归 求x 和 y 的最大...

c++杂技(一):c++中的仿函数,把对象当成函数用【代码】

c++中,有操作符 operator() ,可以在对象后加上操作符 () ,使程序看起来像是函数执行。#include<iostream> using namespace std; template<typename T> class print { public:void operator() (const T& elem){cout << elem << " ";} };可以先声明一个print的对象,再调用操作符 () ,如下print<int> p; p(234); 如果p以后不再被使用,可以直接声明一个临时对象,然后调用操作符 () print<int>()(234);通常的使用方法如下int ia[...

【C++】sort 函数用法 例题 1185奥赛一本通【代码】

sort 是一个非常简便的函数 可以尝试这样一个例题 添加链接描述 可以用 sort 排列数字,字符串等; 头文件 #include<algorithm> 用法 sort(a+0,a+i+1) 前开后闭的区间 注:现在是默认排序 从小到大排的 排完序的区间是 (a+1,a+i) ,下面的例题可以看一下,你就明白了 sort(a+0,a+i+1,cmp) cmp是定义的一个函数 可以这样写bool cmp(int a,int b) {return a>b; } 那这个 sort(a+0,a+i,cmp)就是从大到小排序了; 下面就是这道题的答...

c++之atan()与atan2()函数【代码】

前言 在处理雷达数据的时候遇到了atan2函数的使用, 具体是根据point点的x, y, z坐标, 求出该点在点云中的序号, 即行列号. double vertical_angle = std::atan2(point.z, std::sqrt(point.x * point.x + point.y * point.y)) * 180 / M_PI;float horizon_angle = std::atan2(point.y, point.x) * 180 / M_PI; int col_index = std::round((horizon_angle / 0.2)) + cloud_width / 2;公式很好理解, 但是在求取col_index时加上了cloud...

C++-Record20—构造函数的调用规则

目录 基本概念 二个特殊的构造函数 调用规则 涉及代码 写在前面:本篇博客所提到的赋值构造函数等同于拷贝构造函数及复制构造函数 基本概念 二个特殊的构造函数 1)默认无参构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空 2)默认拷贝构造函数 当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制 调用规则 1)当类中没有定义任何一...

async_wait传参数绑定事件调用回调函数及C++指针的黑暗面(C++服务器开发相关)【图】

async_wait传参数调用回调函数通过bind方式绑定,可以用lambda表达式代替 本来调用一次print就会失效,可以通过expires_at定义下一次的失效时间来多次执行print 需要占一位参数error_code是系统参数 async_wait形参只有一个所以需要bind绑定函数和函数参数以lambda方式效率更高:回调绑定的参数生命周期一定要足够长保证在run能够运行 如以下情况run会调用智能指针的野指针因为已经超过出了智能指针的生命周期,但不一定会出错这也...

C++ sort()函数讲解

Sort()函数 实现原理: sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,它会...

重拾c++第四天(7):函数相关【代码】【图】

1、引用变量:int a; int &b = a; //引用变量指向同一地址,必须在初始化时定义,且一直对原变量献上忠诚,主要针对类对象 2、函数重载最好用在功能相同,但数据类型不同的情况下(新写一个同名函数) 3、函数模板:4、名称空间调用:1、定义: namespace xx{变量;方法; } 2、using namespace xxx 3、xxx::变量重要区别:命名空间name space可以被再次打开,并添加新成员。但是类class不允许 优先用类,命名空间主要用于避免类名...

C++关于空类型大小以及存在虚函数大小【图】

废话少说,直接上代码#include<iostream> using namespace std;class A{ };class B{B(){}~B(){} };class C{C(){}virtual ~C(){} };int main(){cout<<"A的大小:"<<sizeof(A)<<endl;cout<<"B的大小:"<<sizeof(B)<<endl;cout<<"C的大小:"<<sizeof(C)<<endl; }结果是什么? 以下是剑指OFFER上给的解释:讲解的很详细。 我的机器是64位的,所以结果是: 拓展: 如果类中有俩个虚函数呢?class D{D(){}virtual ~D(){}virtual void func(...

c++ 反汇编 虚函数【代码】

虚函数是面向对象程序设计的关键组成部分。对于具有虚函数的类而言,构造函数和析构函数的识别流程更加简单。而且,在类中定义了虚函数之后,如果没有提供默认的构造函数,编译器必须提供默认的构造函数。  对象的多态性需要通过虚表和虚表指针来完成,虚表指针被定义在对象首地址的前4字节处,因此虚函数必须作为成员函数使用。由于非成员函数没有this指针,因此无法获得虚表指针,进而无法获取虚表,也就无法访问虚函数。class...

c++ 反汇编 构造函数和析构函数【代码】

构造函数和析构函数出现的时机局部对象109: // 局部对象定义调用构造函数110: 111: CNumber Number; 00C8A37D 8D 4D EC lea ecx,[Number] 00C8A380 E8 14 97 FF FF call CNumber::CNumber (0C83A99h) 局部对象的析构顺序与构造顺序相反 堆对象109: // 局部对象定义调用构造函数110: 111: CNumber Number; 00C8A385 C7 45 FC 00 00 00 00 mov dword ptr [ebp-4],0 11...

C++ 模板常见特性(函数模板、类模板)【代码】

背景 C++ 是很强大,有各种特性来提高代码的可重用性,有助于减少开发的代码量和工作量。 C++ 提高代码的可重用性主要有两方面:继承 模板继承的特性我已在前面篇章写过了,本篇主要是说明「模板」的特性。 使用「模板」的特性设计,实际上也就是「泛型」程序设计。 函数模板 01 变量交换函数模板 假设我们设计一个交换两个整型变量的值的函数,代码如下: // 交换两个整型变量的值的Swap函数: void Swap(int & x,int & y) {int t...

《C++反汇编与逆向分析技术揭秘》--认识启动函数,找到用户入口【代码】【图】

《C++反汇编与逆向分析》和《程序员的自我修养》都是以VC6的代码作为例子讲解的。这里是在vs2017下,CRT代码有些区别,但整体流程上都是初始化环境,设置参数,最后转到用户main函数。class COne { public:COne(){printf("COne \r\n");}~COne(){printf("~COne \r\n");} };COne g_One;int main() {printf("main函数识别 \r\n");return 0; } // The implementation of the common executable entry point code. There are four // e...

c++STL之內建函数对象【代码】

STL内建了一些函数对象:算数仿函数、关系仿函数、逻辑仿函数 用法: 这些仿函数所产生的对象,用法和一般函数完全相同; 使用內建函数对象,需要引入头文件#<include><functional> 一、算数仿函数#include<iostream> using namespace std; #include <functional> //内建函数对象头文件//内建函数对象 算术仿函数//negate 一元仿函数 取反仿函数 void test01() {negate<int>n;cout << n(50) << endl; }//plus 二元仿函数 加法...

c++之函数模板案例【代码】【图】

1.利用函数模板封装一个排序的函数,可以对不同的数据类型数组进行排序。 2.利用的排序算法是选择排序。#include<iostream> #include<fstream> #include<string> using namespace std;template<class T> void mySwap(T& a, T& b) {T tmp = a;a = b;b = tmp; }template<class T> void selectSort(T arr[],int len) {for (int i = 0; i < len; i++) {int max = i;for (int j = i + 1; j < len; j++) {if (arr[max]< arr[j]) {max = j...