int函数

C++ new和delete运算符简介

五迷三道 提交于 2020-03-11 12:47:03
在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示: int p = (int ) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间 free§; //释放内存 在C++中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delete:new 用来动态分配内存,delete 用来释放内存。 用 new 和 delete 分配内存更加简单: int *p = new int; //分配1个int型的内存空间 delete p; //释放内存 new 操作符会根据后面的数据类型来推断所需空间的大小。 如果希望分配一组连续的数据,可以使用 new[]: int *p = new int[10]; //分配10个int型的内存空间 delete[] p; 用 new[] 分配的内存需要用 delete[] 释放,它们是一一对应的。 和 malloc() 一样,new 也是在堆区分配内存,必须手动释放,否则只能等到程序运行结束由操作系统回收。为了避免内存泄露,通常 new 和 delete、new[] 和 delete[] 操作符应该成对出现,并且不要和C语言中 malloc()、free() 一起混用。 在C++中,建议使用 new 和 delete 来管理内存,它们可以使用C+

POJ走出迷宫

别等时光非礼了梦想. 提交于 2020-03-11 12:02:04
常规搜索题。给一个矩阵,有些点不能走,计算从起点到终点的最短路径的长度。 注意: 矩阵范围为100*100,DFS+剪枝也会超时(但理论上最坏情况都是O(n^2),可能是测试点的问题?专门不让DFS过) DFS模板:把终止条件和剪枝放在函数头,然后依次访问四个方向,先判断再标记进入,回溯。 # include <iostream> int H , L , step = 0 , min = 100000 , X [ 4 ] = { 0 , 1 , 0 , - 1 } , Y [ 4 ] = { - 1 , 0 , 1 , 0 } , sh , sl ; char maze [ 110 ] [ 110 ] ; bool mark [ 110 ] [ 110 ] ; void dfs ( int h , int l , int step ) { if ( step >= min ) return ; if ( maze [ h ] [ l ] == 'T' ) { if ( step < min ) min = step ; return ; } for ( int i = 0 ; i < 4 ; i ++ ) { int hh = h + Y [ i ] , ll = l + X [ i ] ; if ( ( maze [ hh ] [ ll ] == '.' || maze [ hh

C++函数的默认参数

送分小仙女□ 提交于 2020-03-11 10:51:16
在C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值 。也就是说,调用函数时可以省略有默认值的参数。如果用户指定了参数的值,那么就使用用户指定的值,否则使用参数的默认值。 所谓默认参数,指的是当函数调用中省略了实参时自动使用的一个值,这个值就是给形参指定的默认值。示例: # include <iostream> using namespace std ; //带默认参数的函数 void func ( int n , float b = 1.2 , char c = '@' ) { cout << n << ", " << b << ", " << c << endl ; } int main ( ) { //为所有参数传值 func ( 10 , 3.5 , '#' ) ; //为n、b传值,相当于调用func(20, 9.8, '@') func ( 20 , 9.8 ) ; //只为n传值,相当于调用func(30, 1.2, '@') func ( 30 ) ; return 0 ; } 运行结果: 10 , 3.5 , # 20 , 9.8 , @ 30 , 1.2 , @ 定义一个带有默认参数的函数 func(),并在 main() 函数中进行了不同形式的调用。 指定了默认参数后

【C++】如何接收函数return返回来的数组元素

て烟熏妆下的殇ゞ 提交于 2020-03-11 10:32:49
转自 https://www.cnblogs.com/Wade-James/p/7965775.html   我们知道return语句作为被调用函数的结束,返回给调用者函数值。一般来说,是返回一个函数值,像一个int, double,char等类型的数据,当然也可以是他们的指针。但是当我们遇到要返回很多数怎么办呢?通常想到的是以数组的形式返回,下面就让我们来看看:   通常来说有两种方式:1.通过返回传入数组指针的方式;2.以指针变量作为函数参数,来实现数组的返回。   一、返回传入数组指针的方式   首先我们来看看这种方法所涉及的知识:(1)指针函数。C语言中允许一个函数返回值是一个指针(地址)基本格式是: 基类型 * 函数名(参数列表)(2)静态变量与局部变量。我们知道C语言程序在运行时,操作系统会给其分配内存空间。这段空间主要分为四个区域,分别是 栈取,堆区,数据区,代码区 。那么 静态变量是存放在数据区,作用范围是全局的,在内存中只存储一份 。 局部变量通常放在栈中,随着被调用的函数的退出内存空间自动释放 。 要接收被调函数返回的指针,那么可以使用一个指针变量。关键是被调函数用什么去返回数组的首地址,正如前面所说,被调函数在执行完之后内存空间就被释放。   这里提供三种方法解决这一问题:    1)通过传入一个空的数组头地址,返回这个变量。 //通过返回传入数组的指针的方式

spfa的魔改方法

北慕城南 提交于 2020-03-11 07:40:21
spfa的魔改方法 ( \(update\) \(on\) \(2019/8/13\) ) 参考文献: spfa的玄学优化和Hack方法 学图论,你真的了解最短路吗? ETO组织成员 的题解小合集系列 题外话: 关于这篇博客的题目,我想了几个(光速逃……: 关于BellmanFord转生变成spfa的那些事 欢迎来到效率至上主义的OI图论 RE:从零开始的图论生活 能跑网格图,还能卡过菊花图,这样的spfa你喜欢吗 某科学的队优spfa 我的无优化spfa果然有问题 进入正题: 先来说一下 \(spfa\) 吧, \(spfa\) 的全称是 \(Shortest\) \(Path\) \(Fastest\) \(Algorithm\) ,其实就是 \(Bellman\) - \(Ford\) 算法加上一个队列优化。 其时间复杂度并不稳定,最快可以达到 \(O(1)\) ,最慢会被卡成 \(Bellman\) - \(Ford\) 的 \(O(nm)\) 今天就来总结一下学到的 \(spfa\) 的各种魔改: 前置:读入优化 由于毒瘤出题人很有可能会卡时间,所以我们需要读优(输出优化不一定) 标准代码:(随用随复制) inline int read() { int fu=1,x=0;char o=getchar(); while(o<'0'||o>'9'){if(o=='-')fu=

c# 某日期是当月的第几周

一笑奈何 提交于 2020-03-11 06:12:16
DateTime里只有DayOfWeek这个属性,不能直接得到当天是当月的第几周。所以写了个函数,来计算一个日期是当月的第几个星期,代码有详细的注释,就不多说了 参数说明: day :要判断的日期, WeekStart :1周一 为一周的开始,2周日为一周的开始 1 public static int WeekOfMonth(DateTime day, int WeekStart) 2 { 3 // WeekStart 4 // 1表示 周一至周日 为一周 5 // 2表示 周日至周六 为一周 6 DateTime FirstofMonth; 7 FirstofMonth = Convert.ToDateTime(day.Date.Year + " - " + day.Date.Month + " - " + 1 ); 8 9 int i = ( int )FirstofMonth.Date.DayOfWeek; 10 if (i == 0 ) 11 { 12 i = 7 ; 13 } 14 15 if (WeekStart == 1 ) 16 { 17 return (day.Date.Day + i - 2 ) / 7 + 1 ; 18 } 19 if (WeekStart == 2 ) 20 { 21 return (day.Date.Day + i - 1 ) / 7 ;

派生类访问基类的私有成员

旧时模样 提交于 2020-03-11 05:01:37
派生类不能直接访问基类的私有成员,若要访问必须使用基类的接口,即通过其成员函数。实现方法有如下两种: 1.在基类的声明中增加保护成员,将基类中提供给派生类访问的私有成员定义为保护成员。 2.将需要访问基类私有成员的派生类成员函数声明为友元。 [cpp] #include<iostream> using namespace std; class Base { friend class Derived2;//friend int x; protected://protected int y; }; class Derived1:Base//private继承 { public: /* int getx() { return x;//不合法,访问基类的private成员 }*/ int gety() { return y;//合法,访问基类的protected成员 } }; class Derived2:Base//private继承 { public: int getx(); }; int Derived2::getx() { return x;//友员直接访问基类的私有成员 } class Derived3:public Base//public继承 { public: /* int getx() { return x;//在这里还是不能访问,因为x是Base的private成员

洛谷 P4549 【模板】裴蜀定理

£可爱£侵袭症+ 提交于 2020-03-11 03:28:19
P4549 【模板】裴蜀定理 题目链接-P4549 【模板】裴蜀定理 解题思路 裴蜀定理 裴蜀定理(或贝祖定理):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立——百度百科 它的一个重要推论是:a,b互质的充要条件是存在整数x,y使ax+by=1. 至于证明方法就去 百度百科-裴蜀定理 看一看啦 所以根据根据裴蜀定理的推广,原式最小值即为gcd(A1,A2…An) __gcd()是C++自带的计算gcd的函数 求gcd时记得判断一下Ai的正负 附上代码 # include <bits/stdc++.h> # define int long long # define lowbit(x) (x &(-x)) using namespace std ; const int INF = 0x3f3f3f3f ; const double PI = acos ( - 1.0 ) ; const double eps = 1e-10 ; const int M = 1e9 + 7 ; const int N = 1e5 + 5 ; typedef long long ll ; typedef pair < int , int > PII ; signed main ( ) { ios ::

剑指offer-20200310

Deadly 提交于 2020-03-11 02:29:53
20200310 题目 :1~n整数中1出现的次数。 输入一个整数 n ,求 1~n 这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 思路 : f(n) 函数的意思是 1~n 这 n 个整数的十进制表示中 1 出现的次数,将 n 拆分为两部分,最高一位的数字 high 和其他位的数字 last ,分别判断情况后将结果相加,看例子更加简单。 例子如 n=1234 , high=1 , pow=1000 , last=234 可以将数字范围分成两部分 1~999 和 1000~1234 1~999 这个范围1的个数是 f(pow-1) 1000~1234 这个范围1的个数需要分为两部分: 千分位是1的个数:千分位为1的个数刚好就是 234+1(last+1) ,注意, 这儿只看千分位,不看其他位 其他位是1的个数:即是 234 中出现1的个数,为 f(last) 所以全部加起来是 f(pow-1) + last + 1 + f(last) ; 例子如 3234 , high=3 , pow=1000 , last=234 可以将数字范围分成两部分 1~999 , 1000~1999 , 2000~2999 和 3000~3234 1~999 这个范围1的个数是 f(pow-1) 1000~1999

C++并发编程(附录A)[ constexpr-04]

匆匆过客 提交于 2020-03-11 00:59:07
author: luixiao1223 title: 附录A A.4 constexpr functions const const int i=23; const int two_i=i*2; const int four=4; const int forty_two=two_i-four; Specify the bounds of an array: int bounds=99; int array[bounds]; //Error const int bounds2=99; int array2[bounds2]; Specify the value of a nontype template parameter template<unsigned size> struct test {}; test<bounds> ia; // Error test<bounds2> ia2; Provide an initializer for a static const class data member of integral type in the class definition: class X { static const int the_answer=forty_two; }; Provide an initializer for a built-in type or