- 博客(42)
- 资源 (17)
- 收藏
- 关注
原创 Android Activity onPause/onResume切换演示
设置流程:创建MainActivity 和 SecondActivity;设置SecondActivity的主题 为Dialog 形式: <activity android:name=".SecondActivity" android:theme="@style/Theme.AppCompat.Dialog" android:label="Second">从MainActivity跳转到SecondActivity;验证结果:SecondActivity 以Dialog形式.
2021-03-07 22:22:17
493
原创 Android Activity 生命周期
注: 上述销毁和重建的流程基于Android29 版本实际验证得出, 验证函数包括onSaveInstanceState()和 onRestoreInstanceState() 。SeekBar的属性设置: android:saveEnabled <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/.
2021-03-07 21:36:55
225
原创 C++ 输出格式控制
整数流的基数:#include <iostream>using namespace std;int main(){ int a = 10; int b = 12; cout << a << " " << b << endl; cout << hex; cout << a << " " << b << endl; // hex 十六进制生效
2020-11-25 22:52:51
601
原创 C++ 输入输出函数
cin: 对应标准输入流 std::in;cout:: 对应带缓冲区的std::out;cerr: 对应不带缓冲区的 std::err, 同时在执行cerr 输出前,会先强制执行 std::cout.flush();clog: 对应带缓冲区的 std::err;上面说的c 对应的是character,即 character log, character err log 等;cppreference 上有对上述几个输出输入库函数的详细定义说明;cerr:The global object
2020-11-25 21:50:11
1454
原创 C++ 多态的几种非典型场景
多态的几种情形:在非构造函数,非析构函数的成员函数中调用虚函数,是多态;class Base {public: void func1() { func2(); } virtual void func2() { cout << "base func2" << endl; }};class Derived : public Base {public: void func2() { // 派生类与
2020-11-07 00:10:29
592
原创 C++ qsort() 与 sort() 区别
sort() 来自C++ 的algorithm 库, qsort()存在C/C++ 两种版本,但是sort() 使用更便捷.First qsort基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。函数对buf 指向的数据按升序排序。使用方法:void qsort( void *base,
2020-11-06 23:31:02
390
原创 C++ 虚函数和多态
虚函数: 前面有virtual关键字的成员函数就是虚函数。class Base { virtual int Get();};int Base::Get() {}virtual 关键字只用在类定义时的函数声明中,写函数体时不需要。注意:构造函数 和 静态成员函数不能声明为虚函数。 为什么?构造函数如果是虚函数,那么如果通过基类指针调用派生类对象,但是派生类对象还未生成,这个就跟构造函数: 先调用基类构造函数,再调用派生类构造函数 冲突;静态成员函数 跟 对象无关,只跟类本身有关,当对象还不存
2020-11-06 23:20:29
159
原创 C++ 重载类型转换运算符
C++ 类型转换运算符operator data_type (){return xxxx // xxx 即为 data_type 类型, 不需要再定义函数的返回值类型.}注意: 上述即为类型转换运算符函数的定义模型。class Complex {private: int value;public: explicit Complex(int i) : value(i) { } operator int () // 将Complex对象直接转为int类型,同时函数
2020-09-24 23:35:54
2600
原创 C++ 插入/提取运算符重载
C++ 插入/提取运算符重载介绍:“<<” : 左移运算符,因为被重载用于数据流的插入,所以又叫 插入运算符;“>>”: 右移运算符,因为被重载用于从数据流中提取数据,所以又叫提取运算符;使用:根据上一篇博客:运算符重载 可知, 由于插入、提取运算符在ostream/istream 类中已实现定义,所以自定义的类如果需要重载,那么只能重载为自定义类的 友元函数。class Complex{ public: Complex(double r,
2020-09-24 00:17:53
3487
原创 C++ 运算符重载
C++ 运算符重载运算符重载,就是对已有的运算符(C++ 中预定义的运算符) 赋多重的含义, 使同一运算符作用于不同类型的数据时导致不同类型的行为。重载的目的: 扩展C++ 中提供的运算符的适用范围,使之能作用于对象。 这样,同一个运算符,对不同类型的操作数,就会对应不同的行为。本质 运算符重载实质是函数重载。 可以重载为普通函数,或者成员函数。把含运算符的表达式转为对运算符函数的调用,操作数即为运算符函数的参数。 支持运算符的多次重载,因为函数本身就是支持重载的。运算符重载的形式返回值类型
2020-09-20 23:25:34
287
原创 C++ this指针的理解
C++ this指针的理解this 指针: 指向成员函数所作用的对象;注意: 从这个定义即可看出, this存在的前提是对象必然存在。非静态成员函数中可以直接使用this 来代表该函数作用的对象的指针。静态成员函数中不可以使用this 指针,因为静态成员函数是在类上只有一份,跟对象无关,即 对象不存在时就可以执行该函数。class A {private: int i;public: void Hello() { // 编译器翻译为C程序得到: Hello(A* this
2020-09-06 23:47:04
201
原创 C++ 基于范围的for 循环 适用容器列举与分析
C++ 11 基于范围的for 循环,使用起来特别方便,但是 是否所有容器均适合使用? 如何判断某个对象是否 支持 基于范围 的for 循环?基于范围 for循环,基本格式如下: XXX tempContainer; for (auto &item : tempContainer) { cout << item << endl; }这里的XXX 可以替换为任意的容器或者类类型,比如 map<int, int>
2020-07-05 00:29:20
978
原创 C++ Lamda表达式
Lamda表达式作用:Lambda表达式类似Javascript中的闭包,它可以用于创建并定义匿名的函数对象,以简化编程工作。Lambda的语法如下:[函数对象参数](操作符重载函数参数)->返回值类型{函数体}vector<int> iv{5, 4, 3, 2, 1}; int a = 2, b = 1; int foo = 3; for_each(iv.begin(), iv.end(), [b](int &x){cout<<(x + b)<
2020-05-28 00:47:10
1625
1
原创 C++ 字面量操作符 operator + 双引号
字面量操作符的声明与使用字面量操作符 RETURN_TYEP operator “” FuncName(paramList)参数类型根据 C++ 11 标准,只有下面这些参数是合法的:即paramList只能是下面这些类型char const*unsigned long longlong doublechar const*, std::size_twchar_t const*, std::size_tchar16_t const*, std::size_tchar32_t const*
2020-05-19 01:11:27
2667
原创 C++ vector 初始化方式小结
vector 有多种初始化方式,本文只讲 跟构造函数相关的,对于成员函数引入的变更此处不做记录。默认构造函数vector<int> tempVec;vector() 默认构造函数,构造一个空的vector 对象tempVec, tempVec.size() 返回为0;2. 拷贝构造函数vector<int> tempVec1;vector<int> tempVec2(tempVec1);vector<int> tempVec3 = tem
2020-05-15 00:34:39
371
原创 C++ std::thread 初级介绍
std::thread 的相关特性总结: 头文件:#include <thread>1) thread t(Start, args….) // 构造函数, Start()为需要线程将要执行的函数,args 清单即为Start()函数的参数列表;注意: 当执行完上述语句,即代表 一个线程已经启动执行;t.join(); // 阻塞当前线程,直至目标线程执行完毕;只可以被调用1次,调用之后,joinable 被设置为false;t.detach(); // 将thre...
2020-05-14 00:24:12
644
原创 C++ 拷贝构造函数 和 赋值运算符 快速区别(口诀)
拷贝构造函数和 赋值运算符 的区别:口诀:拷贝构造函数与赋值运算符的区别是,拷贝构造函数在创建或初始化对象的时候调用,而赋值运算符在更新一个对象的值时调用。 即一个是做初始化,一个是做更新。注意:对象以值传递方式从函数返回时,若接受返回值的对象已经初始化过,则会调用赋值构造函数,且该对象还会调用析构函数,当对象中包含指针时,会使该指针失效,因此需要重载赋值构造函数,使用类似深拷贝或移动构造函数的方法赋值,才能避免指针失效。拷贝构造函数使用场景:1.对象需要通过另外一个对象进行初始化2.对.
2020-05-13 00:47:55
537
原创 C++ 隐式转换 逻辑与场景分析
上图是隐式转换的基本逻辑;1. char/short 直接转换为int,char/short 之间不做转换;2. float 会直接转换为 double;3. type --> unsigned type 总是从有符号数转换为 无符号数; 比如图中未体现的 unsigned long --> long long --> unsigned long long;转换涉及的场景: 算术运算式中,低类型转换为高类型 赋值表达式中,表达式的值转换为左边变量的...
2020-05-13 00:31:45
211
原创 C++ 移动构造与移动赋值
移动构造 与移动赋值https://blog.youkuaiyun.com/D_4_Y_/article/details/95228609https://blog.youkuaiyun.com/yapian8/article/details/42341307?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4&am...
2020-05-05 23:57:15
230
原创 LeetCode 3. 无重复字符的最长子串 思路讲解
LC 题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/题目思路://使用set记录滑动窗口中出现过的字符;//使用left/rigth分别指向窗口的左边和右边,起始位置均为第一个字符;//判断r...
2020-05-02 22:43:51
289
原创 LeetCode 21. 合并两个有序链表 思路讲解
LC 题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/题目思路 1: 链表本身有序,合并2个升序的链表为一个升序的链表;对于链表的操作,常有 能画出来就能做出来的说法。 L1: 1 -> 2 -> 3 L2 : 1 -> 3 -> 4对于链表的操作,最后都要返回第一个...
2020-05-02 00:31:44
445
原创 LeetCode 1051. 高度检查器 思路讲解
LC 题目链接:https://leetcode-cn.com/problems/height-checker/题目思路: 根据题目给出的样例可以看出结果就是数组排序前后变化过的位置的个数。第一反应肯定是数组排序,然后比较。 vector<int> tempVec(heights); sort(tempVec.begin(), tempVec.end()); 然...
2020-05-01 18:53:15
153
原创 LeetCode 1413. 逐步求和得到正数的最小值 思路讲解
LC 题目链接:https://leetcode-cn.com/problems/minimum-value-to-get-positive-step-by-step-sum/题目思路: 这是一个简单题,从题目中的信息就可以看出,这个是数组的累加和有关; 那就需要记录数组从左到右的累加和,而最小的正整数,只要我们计算出最小的累加和,对其取绝对值然后加1 即可。注意:从用例里...
2020-04-27 00:23:49
249
原创 LeetCode 46 全排列问题思路讲解
LC 题目链接:https://leetcode-cn.com/problems/permutations/题目思路:1. 拿到题目的第一反应就是枚举,把所有可能的情形都列出来,同时题目的样例也只有3个数,很好列出来;但是列出来还是做不出来这个题目。2. 回想是否做过类似的题目,这个就是一个选择的问题,比如左右括号各有几个,然后可以有多少种组合,这个时候就可以想到使用回溯法来解决这...
2020-04-25 21:49:40
201
原创 summary
1. string 相关的转换to_string(int/double/float) -->stoi(), stof(), stod()string(len, char)string(char*, len)2. string 的替换;string s = "123";int pos = s.find("2");if (pos != string::npos) { s...
2020-03-22 13:17:40
122
原创 Shell实现自动更新目录名称与文件中版本号信息与时间戳
背景:修改如下样例目录下所有目录的版本号信息与时间戳;修改如下样例文件中的版本号信息与时间戳;样例目录:$ find template_patch_dir/template_patch_dir/template_patch_dir/ONIP_SNE_V300R002C80CP1006_SUSE11_D2015-12-10template_patch_dir/ONI
2015-12-19 19:11:55
2891
原创 C++Primer 的string相关函数
10.8/9 这两天看的是关于string的一些函数,写在这里: 1. 今天在小程序里用错了的substr()函数;string s="hello world";string s2 = s.substr(6, 5);// 6:子串的起始位置,5:子串的长度;cout 不知道在C++中数字标示的起始位置,其第二个参数就是长度?而迭代器就是[begin,end) 这种区间模
2013-10-09 23:54:02
490
原创 C++ stringstream的小结
stringstream是继承stream来的,stringstream的功能类似于C 语言中的sprintf(), sscanf()这两个函数,即可以方便的实现数据类型和string类型之间的转换; 使用stringstream需要包含的头文件是;搜索一下,发现一篇很详细的关于stringstream的用法介绍,网址就贴在这里了:http://www.cppblog.com/San
2013-10-06 00:38:11
702
原创 C 语言详解 之 name 的分隔
<br /><br />#include <stdio.h><br />#include <string.h><br />int main()<br />{<br /> FILE *inp,*outp;<br /> inp=fopen("input.txt","r");<br /> outp= fopen("result.txt","w");<br /> char name[80];<br /> char* status = fgets(name, 80, inp);<br /> <
2011-02-16 21:34:00
795
原创 C 语言详解 之 字符串后缀
<br /><br />#include <stdio.h><br />#include <string.h><br />#define MAX 100<br />int main()<br />{<br /> char str1[MAX],str2[MAX];<br /> printf("please input a string:/n");<br /> scanf("%s",str1);<br /> printf("please input another string:/n");<br />
2011-02-16 20:59:00
973
原创 C 语言详解 之 单词反转
#include #include #define MAX_LEN 100int main(){ char str[MAX_LEN]; printf("input a string separated by a blank:/n"); gets(str); printf("%s/n",str); char *words[MAX_LEN]; int length = strlen(str); int count=0; int i=0; while(' '== str[i
2011-02-16 20:53:00
759
原创 C语言详解 之 数值列表积
<br /><br /> <br />#include <stdio.h><br />#include <math.h><br />#define input "list.txt"<br />#define max 5 <br />int fgetList(FILE*inp, int list[], int max_num);<br />int main()<br />{<br /> FILE *inp;<br /> int count;<br /> int x[max],y[max],z
2011-02-12 11:40:00
439
原创 C语言详解 之 集合的并
<br /><br /> <br />#include <stdio.h><br />#include <math.h><br />#define max 20<br />#define error -8<br />int sort_array(double x[],double y[],int x_num, int y_num, double z[]);<br /> int main()<br />{<br /> double x[max];<br /> double y[max];<br /
2011-02-12 10:52:00
684
原创 C语言详解 之 错误率的计算
#include #define input "examdat.txt"#define output "report.txt"int fgetAnswers(int*pos, char res[], FILE*inp);int main(){ FILE*inp,*outp; inp = fopen(input,"r"); outp = fopen(output,"w"); int n; char ans[100]; int ID; char result[100]; int missed[100];
2011-02-12 10:19:00
1278
1
原创 C语言详解 之 密码校验
<br /><br />#include <stdio.h><br />int main()<br />{<br /> char ch;<br /> char blank = ' ';<br /> scanf("%c",&ch);<br /> int sum=0;<br /> while('/n'!=ch)<br /> {<br /> sum += (int)ch;<br /> sum %=64;<br /> scanf("%c",&ch);<br /> }<br /> sum+=(int)blank
2011-02-08 17:10:00
647
原创 C语言详解 之 函数参数的实现
<br /><br />#include <stdio.h><br />#include <math.h><br />void trap(double a,double b, int n, double f(double arg));<br />double g(double x);<br />double h(double x);<br />int main()<br />{<br /> double a,b;<br /> int n;<br /> printf("区间左端点:");<br /> scan
2011-02-08 16:50:00
385
原创 C语言详解 之 浮点数的表示误差
#include int main(){ for(double i=0.1;i printf("%.1f ",i); return 0;}
2011-02-08 16:21:00
2521
原创 C 语言详解 之 三个问题的判断
<br />#include <stdio.h><br />#include <math.h><br />int problem_a(int x);<br />int problem_b(int x);<br />int problem_c(int x);<br />void display_ans(int num,int *a, int *b, int *c);<br />int main()<br />{<br /> bool flag;<br /> do{<br /> int a,b,c;<br
2011-01-31 22:34:00
510
原创 C 语言详解 之 棒球安打率的计算
<br /><br />#include <stdio.h><br />int main()<br />{<br /> FILE*inp, *outp;<br /> inp = fopen("input.txt","r");<br /> outp = fopen("output.txt","w");<br /> int ID;<br /> char ch;<br /> double result;<br /> double num_O = 0.000;<br /> double num_H = 0.000;
2011-01-31 22:10:00
1438
原创 C 语言详解 之 持续处理数据
<br /> <br /> <br /><br />#include <stdio.h><br />int main()<br />{<br /> int status=0;<br /> int error;<br /> int num;<br /> do{error=0;<br /> printf("please input a number:");<br /> status = scanf("%d",&num);<br /> if(!status)<br /> {<br /> printf(
2011-01-31 21:32:00
388
编译原理 LL(1)文法 两个版本
2010-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人