begin

使用C/C++实现对字符串的反转(递归和非递归)

孤人 提交于 2019-12-08 07:25:49
这是非递归的: /*实现字符串翻转*/ char * reverse_str( char * str) { if (NULL == str) //字符串为空直接返回 { return str; } char *begin; char *end; begin = end = str; while (*end != '\0' ) //end指向字符串的末尾 { end++; } --end; char temp; while (begin < end) //交换两个字符 { temp = *begin; *begin = *end; *end = temp; begin++; end--; } return str; //返回结果 } void main() { char str[] = "123456" ; printf(reverse_str(str)); } 递归的: char *reverse(char *str) { int len = strlen(str); if( len > 1 ) { char ctemp =str[0] ; str[0] = str[len-1]; str[len-1] = '\0'; reverse(str+1); str[len-1] =ctemp; } return str; } 来源: CSDN 作者: 无为小青年15 链接: https:

C++11数组引用作为函数参数

纵饮孤独 提交于 2019-12-07 19:08:35
在看<<C++ prime>>中遇到了一个问题,看到一半的时候记得书中讲数组做为函数参数时应当提供额外的形参,可以断定数组的开始和结束。 1、数组做为函数参数的三种方法 //额外传递一个数组大小的形参 int func(int a[],size_t n); //提供一个数组结束的断定符,例如:C风格的字符串字面值用'\0'断定字符串结束 int func(int a[]);//数组a中必须要有断定符 //使用C++标准库的begin和end函数来获取一个指向数组首元素和尾元素 之后 的指针,类似于迭代器 int func(begin(a),end(a)); 2、问题 我们仔细观察最后一种方法,使用begin和end函数的方法,有没有发现什么?? 既然begin和end是一个函数,而且他们的形参也是一个数组,但是他们为什么没有提供额外的参数呢?他们是怎么得到指向尾元素后面的指针的?想想我们自己会怎么实现: 我们自己实现时无非是通过首元素的地址加上数组大小得到,可是,begin和end并没有提供数组大小的形参作为参数呀。 上述问题的答案,其实引出了第四种解决方案,查看C++头文件,begin和end定义在iterator头文件中,gcc是定义在bits文件夹下的range_access.h头文件中,下面是截取该头文件的部分内容。 // <range_access.h> -*- C++

BEGIN SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_02', 'SYS'); END;

你离开我真会死。 提交于 2019-12-06 14:13:11
问题背景: 客户反馈系统突然很慢,查询awr报告 658whw2n7xkd2 BEGIN SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_02', 'SYS'); END; 数据库在取数据块时为了保护内存的数据结构而加了latch(一种锁,很短暂),当SQL逻辑读过高,在并发的情况下大家都要去取相同的数据库而产生的等待, 出现这两个等待事件,基本上是由于大量的逻辑读竞争造成,那么直接去查逻辑读或物理读模块就可以看到问题所在。既然是并发情况下竞争去读取同一块,那边在AWR上看肯定是长时间无返回的语句 发现此sql占用了大量的read:BEGIN SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_02', 'SYS'); END; 当时没搞明白,这语句块代表啥意思,百度搜了一下是用EXPDP在备份数据,客户确认确实有定时备份任务,建议用户调整备份时间 数据泵expdp需要全表扫,要把数据块都读到内存中,进行导出,当进入内存后,expdp获得了数据块的latch,但是这时候有个sql进来了, 要访问的数据块expdp正在访问,SQL也要获得latch,虽然latch很快,但是此时访问的特别多,问题的严重性就出来了, 其实这个latch争用严重的时候并不是用户反馈慢这么简单,有的会直接使CPU使用率达到97%以上

Delphi 对文件的操作

坚强是说给别人听的谎言 提交于 2019-12-06 12:05:58
导出excel、 //导出excel procedure TForm1.btn3Click(Sender: TObject); var i: integer; excel: OleVariant; saveDialog: TSaveDialog; sFileName: string; begin try try excel := createoleobject('excel.Application'); except excel := createoleobject('excel.sheet.12'); end; excel.workbooks.Add; except Application.MessageBox('无法调用Excel!', '警告', MB_ok + MB_iconwarning); end; saveDialog := TSaveDialog.Create(nil); saveDialog.Filter := '文件excel(.xls)|.xls|文件excel(.xlsx)|.xlsx'; if saveDialog.execute then begin if FileExists(saveDialog.FileName) then begin try if Application.MessageBox('该文件已存在是否覆盖?', '询问', MB

数组字符常用操作

十年热恋 提交于 2019-12-06 07:54:20
字符串反转 def reverseString(s): begin = 0 end = len(s)-1 ss = list(s) while(end>begin): ss[begin], ss[end] = ss[end], ss[begin] end -= 1 begin += 1 return ''.join(ss) 来源: https://www.cnblogs.com/JetBlock/p/11969821.html

vector删除数据

女生的网名这么多〃 提交于 2019-12-06 03:31:40
1 //vector 删除数据 2 v.pop_back();//删除最后一个元素 3 v.erase(v.begin()+3);//删除迭代器指向的元素 4 v.erase(v.begin()+4,v.begin()+7);//删除vector中[begin+4,begin+7) 范围中的元素 5 v.clear();//清空所有 代码: #include <iostream> #include<vector> #include<iterator> //#include<bits/stdc++.h> using namespace std; void show(vector<int>& v){ for(int i=0;i<(int)v.size();i++){ cout<<v[i]<<" "; } cout<<endl; } int main() { vector<int> v; for(int i=0;i<10;i++) v.push_back(i); show(v);//0 1 2 3 4 5 6 7 8 9 v.pop_back();//删除最后一个元素 show(v);//0 1 2 3 4 5 6 7 8 v.erase(v.begin()+3);//删除迭代器指向的元素 show(v);//0 1 2 4 5 6 7 8 v.erase(v.begin()+4,v

sort排序使用以及lower_bound( )和upper_bound( )

无人久伴 提交于 2019-12-06 03:21:42
sort()原型: sort(first_pointer,first_pointer+n,cmp) 排序区间是[first_pointer,first_pointer+n) 左闭右开 参数1:第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。 参数2:第二个参数相对较好理解,即首地址加上数组的长度n(代表尾地址的下一地址)。 参数3:默认可以不填,如果不填sort会默认按数组升序排序。也就是1,2,3,4排序(注意这一种只适合于数组,对于结构体就不可行了)。也可以自定义一个排序函数,改排序方式为降序什么的,也就是4,3,2,1这样。 1 bool cmp(struct_name a,struct_name b) 2 { 3 return a.变量名>b.变量名; //如果是这一种那么就是按此变量从大到小排序 4 return a.变量名<b.变量名; //如果是这一种那么就是按此变量从小到大排序 5 return b.变量名<a.变量名; //如果是这一种那么就是按此变量从大到小排序 6 return b.变量名>a.变量名; //如果是这一种那么就是按此变量从小到大排序 7 } 对于数组排序还可以使用标准库中定义好的函数: 升序:sort(begin,end,less<data-type>()) 降序:sort(begin,end,greater<data

矩阵结合律的证明-2019.11.29

半世苍凉 提交于 2019-12-06 02:57:57
学习日志—矩阵 矩阵的乘法 证明矩阵乘法的结合律,即证A(BC)=(AB)C 先令出三个矩阵 A_{m n}; B_{n p}; C_(p*q) 先看等式右边(AB)C 新矩阵第i行第j列的元素就是AB相乘后的第i行与C的第j列各元素相乘的和 A的第i行乘以B的第1列如下: \begin{equation} \left[ \begin{array}{cccc} a_{i1} & a_{i2} & … & a_{in} \end{array} \right ] \left[ \begin{array}{c} b_{11}\ b_{12}\ ... \ b_{1n} \end{array} \right ] \end{equation} 所以AB的第i行的n个元素就是A的第i行乘上B的每一列。(AB)C的第(i,j)个元素计算如下: \begin{equation} (AB)C_{(i,j)} = (\sum_{r=1}^n a_{ir}b_{r1}, \sum_{r=1}^n a_{ir}b_{r2}, …, \sum_{r=1}^n a_{ir}b_{rp}) \left( \begin{array}{c} c_{1j}\ c_{2j}\ …\ c_{rj} \end{array} \right) \ =c_{1j}(\sum_{r=1}^n a_{ij}b_{ij})+ c_

词法分析程序的设计与实现

老子叫甜甜 提交于 2019-12-06 01:08:20
一、实验目的: 利用C语言编制递归下降分析程序,并对简单语言进行语法分析。 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。 二、实验原理 每个非终结符都对应一个子程序。 该子程序根据下一个输入符号(SELECT集)来确定按照哪一个产生式进行处理,再根据该产生式的右端: 每遇到一个终结符,则判断当前读入的单词是否与该终结符相匹配,若匹配,再读取下一个单词继续分析;不匹配,则进行出错处理 每遇到一个非终结符,则调用相应的子程序 三、实验要求说明 输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”,并指出语法错误的类型及位置。 例如: 输入begin a:=9;x:=2*3;b:=a+x end # 输出success 输入x:=a+b*c end # 输出‘end' error 四、实验步骤 1.待分析的语言的语法(参考P90) 2.将其改为文法表示,至少包含 –语句 –条件 –表达式 3. 消除其左递归 4. 提取公共左因子 5. SELECT集计算 6. LL(1)文法判断 7. 递归下降分析程序 以下是我用c语言写的一个递归下降分析程序(该程序是基于我的上一篇博文 词法分析程序的设计与实现 中的词法分析程序改造出来的): #include<stdio.h> #include

SQL索引碎片的产生,处理过程。

此生再无相见时 提交于 2019-12-05 23:35:42
本文参考 https://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html https://www.jb51.net/softjc/126055.html https://docs.microsoft.com/zh-cn/sql/relational-databases/system-dynamic-management-views/sys-dm-db-index-physical-stats-transact-sql?view=sql-server-ver15 本文需要对“ 索引 ”和MSSQL中数据的“ 存储方式 ”有一定了解。 软件经常在使用一段时间过后会无缘无故卡顿,这是因为在数据库(MSSQL)频繁的插入和更新的操作过程中会产生分页,在分页的过程中产生碎片导致的。所以,对于碎片需要定时的处理。基本上所有的办法都是基于对索引的重建和整理,只是方式不同。 删除索引并重建 使用DROP_EXISTING语句重建索引 使用ALTER INDEX REBUILD语句重建索引 使用ALTER INDEX REORGANIZE 以上方式各有优缺点,下面存储过程主要使用3,4 先看一个整理碎片的存储过程,然后采用作业的方式定时执行。 Create PROCEDURE [dbo].[proc_rebuild_index]