str函数

C++ 深拷贝和浅拷贝详解

我的梦境 提交于 2020-03-24 01:25:59
前言 在对象拷贝过程中,如果没有自定义 拷贝构造函数 ,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量, 按字节复制 ,对于类类型成员变量,调用其相应类型的拷贝构造函数。 位拷贝(浅拷贝)举例,a指向b,b的改变其实会影响a的改变,同时a原本指向的空间发生泄漏。 然后这种情况下有了深拷贝。 何时调用? 以下情况都会调用拷贝构造函数: 一个对象以值传递的方式传入函数体 一个对象以值传递的方式从函数返回 一个对象需要通过另外一个对象进行初始化。 然后,我们现在从概念来理解一波 浅拷贝:位拷贝,拷贝构造函数,赋值重载 多个对象共用同一块资源,同一块资源释放多次,崩溃或者内存泄漏。 深拷贝:每个对象共同拥有自己的资源,必须显式提供拷贝构造函数和赋值运算符。 1 class String 2 { 3 4 public: 5 const char* c_str() 6 { 7 return _str; 8 } 9 10 String(const char* str = "") 11 :_str(new char[strlen(str) + 1]) 12 { 13 strcpy(_str, str); 14 } 15 String(const String &s) 16 :_str(NULL) 17 { 18 String tmp(s._str); 19 swap(

《自拍教程49》Python_adb批量字符输入

假如想象 提交于 2020-03-23 20:44:11
Android终端产品系统或App测试,涉及输入框边界值测试, 比如wifi热点设置热点名称, 或者搜索输入框, 需要验证该文本输入框是否最多可以输入256个字符, 如何快速实现进准的256个字符的输入呢? 准备阶段 手动先点击wifi热点名称文本输入框,确保光标已经在编辑框内了 利用adb shell input text + 256个字符, 可以输入256字符串输入 string.ascii_letters 可以包含大小写的英文字母 string.digits 可以包含数字1-10 random.sample 可以随机实现从一个数组“池” 里随机采样 Python批处理脚本形式 # coding=utf-8 import os import string import random chars_num = 256 # chars num字符数量 random_list = random.sample((string.ascii_letters + string.digits) * 5, chars_num - 8) random_str = ''.join(random_list) random_str = "START" + random_str + "END" print(random_str) os.system("adb shell input text %s" %

Python函数

半城伤御伤魂 提交于 2020-03-23 18:28:41
一、相关 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 Python函数可以在类外定义。 Python函数类似Java中的方法。 二、定义一个Python函数 Python中以def开始定义函数,无需注明函数的返回值类型。 函数名后跟(),其中放入函数所需要的参数,同样的参数不需要注明类型。 函数体以冒号开始,并且首行按规定缩进。 函数第一行可以选择性地使用文档字符串来进行函数说明。 可以选择性地以return结束函数,不包含return的函数,返回值为None。 1.函数定义通式 def 函数名(参数列表): "函数说明" 函数体 2.定义一个hello函数 def hello(): """一个hello函数""" print("Hello World!!!") hello() C:\Python\Python37-32\python.exe E:/Workspaces/PycharmProjects/untitled/openTest.py Hello World!!! Process finished with exit code 0 3.定义一个带参函数 def hello(str): ""

转贴- Loadrunner变量定义

泪湿孤枕 提交于 2020-03-22 22:36:06
3 月,跳不动了?>>> Loadrunner变量分为局部变量和全局变量。 1. 如何定义变量 在Loadrunner脚本中变量必须在开头声明。比如说,在Vuser_init/Action/Vuser_end定义变量,必须现在最顶端生命,后面才能使用。如果不这样,编译器是通不过的。 例如1: vuser_init() { int i=0; char tmp[40]; char str[40]; ..... //使用变量 } 2. 局部变量 就像C语言一样,变量有作用域范围,局部变量包含在函数或者Vuser_init/Action/Vuser_end内部,对于其他范围之外就不起作用了。 例子2: vuser_init() { char * str=test; lr_output_message(str Value1: %s,str); return 0; } Action() { lr_output_message(str Value1: %s,str); return 0; } 由于Action中的变量str没有定义,所以编译报错。如果注释点这一行,运行,在控制台中打印出结果 3. 全局变量 若要跨越Vuser_init/Action/Vuser_end定义变量,则需要定义全局变量。定义方式有两种: 1)定义在 globals.h 文件中 例子3: #ifndef _GLOBALS

java数据结构之递归算法

旧城冷巷雨未停 提交于 2020-03-22 15:11:59
概述 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。递归有直接递归和间接递归 •直接递归:函数在执行过程中调用本身。 •间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。 •表达方式: •递归算法有四个特性: (1)必须有可最终达到的终止条件,否则程序将陷入无穷循环; (2)子问题在规模上比原问题小,或更接近终止条件; (3)子问题可通过再次递归调用求解或因满足终止条件而直接求解; (4)子问题的解应能组合为整个问题的解。 下面将从以下几个典型的例子来讲解递归算法: 汉诺塔问题 如图,汉诺塔问题是指有三根杆子A,B,C。C杆上有若干碟子,把所有碟子从A杆上移到C杆上,每次只能移动一个碟子,大的碟子不能叠在小的碟子上面。求最少要移动多少次? 当n=1时: Move 1 from A to C 当n=2时: Move 1 from A to B Move 2 from A to C Move 1 from B to C 当n=3时: Move 1 from A to C Move 2 from A to B Move 1 from C to B Move 3 from A to C Move 1 from B to A Move 2 from B to C Move 1 from A to C 源代码 static

模块和常用内置模块

故事扮演 提交于 2020-03-22 07:31:07
什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到python解释器的内置模块 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用, 模块的导入和使用 模块的导入应该在程序开始的地方。 常用语法 我们可以在py文件中按照如下方式导入模块: import a from xx import b 当然还可以再导入模块的时候给模块起别名 from xx import heiheihei as yue __name__ 当做脚本运行: __name__ 等于'__main__' 当做模块导入: __name__= 模块名

C++ Set & MultiSet

倾然丶 夕夏残阳落幕 提交于 2020-03-21 23:50:26
转自 http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177627.html STL Set介绍 集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象,其用法与set基本相同。 Set 又称集合,实际上就是一组元素的集合,但其中所包含的元素的值是唯一的,且是按一定顺序排列的,集合中的每个元素被称作集合中的实例。因为其内部是通过链表的方式来组织,所以在插入的时候比vector 快,但在查找和末尾添加上比vector 慢。 multiset 是多重集合,其实现方式和set 是相似的,只是它不要求集合中的元素是唯一的,也就是说集合中的同一个元素可以出现多次。 构造: explicit set(const Compare&=compare()); 如:set<int,less<int> > set1; less<int>是一个标准类,用于形成升序排列函数对象。降序排列是用greater<int>。 Template<class InputIterator> set(InputIterator, InputIterator,\ const Compare&=compare()); 如:set<int ,less<int> >set2(vector1.begin()

MySQL学习(5)

血红的双手。 提交于 2020-03-21 09:35:29
三 触发器   对某个表进行某种操作欠货(如:增删改查),希望触发某个动作,可以使用触发器。   1.创建触发器 create trigger trigger1_before_insert_tb1 before insert on tb1 for each row begin ... endbefore可以换成after, insert可以换成delete,update.      在想tb1插入数据后,tb2结果:      触发器获得用户提交的数据: create trigger tri_after_insert_tb1 after insert on tb1 for each row begin NEW.nid (为用户新提交过来的 tb1.nid的值) NEW.name(为用户新提交过来的tb1.name的值) insert into tb2(num) values(NEW.nid); end create trigger tri_after_delete_tb1 after delete on tb1 for each row begin OLD.nid (为删除的tb1.nid的值) OLD.name(为删除的tb1.name的值) insert into tb2(num) values(OLD.nid); end create trigger tri_after

No.24总结

大兔子大兔子 提交于 2020-03-21 04:59:15
No.24 内容概要 模块梳理 面向对象 内容回顾和补充 1.单例模式 什么是单例模式? 应用场景 __new__ 方法:创建实例,并且在 __init__ 之前工作。 new方法在创建对象空间时,还会在空间内创建一个指针指向对象所属类的地址。 2.logging模块 记录目的 给用户看 银行流水 给程序员看 统计(访问量等) 故障排除 用来记录错误,完成代码优化。debug basicconfig 优点:使用方便 缺点:编码问题,不能同时向文件和屏幕输出等。 logging.debug / logging.warning logger对象 优点:太多 缺点:复杂 流程 创建一个logger对象 创建一个文件操作符 创建一个屏幕操作符 创建一个格式 给logger对象 绑定文件和屏幕操作符 给文件和屏幕操作符设定格式 最后用logger对象来操作 import logging logger = logging.getLogger() # logger对象 fh = logging.FileHandler('log_paper.log') # 文件操作符 sh = logging.StreamHandler() # 屏幕操作符 formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(module)s: %

学习vc++的第三天--集合

£可爱£侵袭症+ 提交于 2020-03-21 01:10:58
原来cpp拷贝构造函数写了之后一定要重写赋值运算符,否则会出现内存重复释放的问题. 学习了集合类型,发现cpp的vector的_Pop_back_n()函数已经在vs2019无法使用..貌似作用也不大..嘻嘻 cpp的vector和c#的list差不多,而cpp的list却好像没有对应的c#操作... 因为我在c#上面重写过迭代器支持类型, 也就是一个不重复加入的:list<T1,T2,T3>, c#自带的支持重复和仅一个泛型的模板:list<T>, 所以可能会在cpp上面复现过往实现过的功能,就比较敏感集合类型的用途. vector的意思是矢量,矢量是连续的, 而list是链表,链表是可断可接, 如意所示,速度要求就看名字就可以联想得到,给他们起名字的人都挺有意思的. 然后发现cpp的std(标准模板库)的没有驼峰命名法,蛮糟糕的,因为敲开c#的人都喜欢以此区分函数和变量... cpp挺有意思,int不能写成int,要写成size_t...因为考虑了64位版本... 所以很多时候一定要多看内部代码.. 今天学习到字符串的赋值和操作,主要操作的形式是要对char.. char*.. const char*.. 然后和string..str.c_str()的认识... 乱七八糟的学习代码: #include <iostream> #include <vector> #include