- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 C++的emplace
结论:关于容器(vector,map,deque等)的插入操作能用emplace就用emplace。除非创建临时变量的代价真的很小。理由: emplace相关函数可以减少内存拷贝和移动。emplace有几个兄弟姐妹,emplace_front、emplace和emplace_back,这些操作构造而不是拷贝元素。这些操作分别对应push_front、insert和push_back,允许我们将元素放置在容器头部、一个指定位置之前或容器尾部。当调用push或insert成员函数时,我们将元素类型的对象传
2020-10-14 19:45:32
1869
原创 C++中的Lambda表达式与仿函数简单介绍
Lambda表达式C++中的Lambda表达式是C++11新引入的内容,从结论上来说Lambda表达式并不是必要的,但是在很多情况下可以简化我们的代码,了解一下还是很有用处的。Lambda表达式的语法基本语法简单来说,Lambda函数也就是一个函数,它的语法定义如下:[capture](parameters) mutable ->return-type{statement}1.[capture]:捕捉列表。捕捉列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。编译
2020-10-14 09:54:04
447
转载 什么是C++中的函数签名
C++中的函数签名(function signature):包含了一个函数的信息,包括函数名、参数类型、参数个数、顺序以及它所在的类和命名空间。普通函数签名并不包含函数返回值部分,如果两个函数仅仅只有函数返回值不同,那么系统是无法区分这两个函数的,此时编译器会提示语法错误。函数签名用于识别不同的函数,函数的名字只是函数签名的一部分。在编译器及链接器处理符号时,使用某种名称修饰的方法,使得每个函数签名对应一个修饰后名称(decorated name)。编译器在将C++源代码编译成目标文件时,会将函数和变量的名
2020-10-14 09:22:07
1395
转载 C++头文件中cstring和string的区别
1.string与cstring有什么区别是C++标准库头文件,包含了拟容器class std::string的声明(不过class string事实上只是basic_string的typedef),用于字符串操作。是C标准库头文件<string.h>的C++标准库版本,包含了C风格字符串(NUL即’\0’结尾字符串)相关的一些类型和函数的声明,例如strcmp、strchr、strstr等。和<string.h>的最大区别在于,其中声明的名称都是位于std命名空间中的,而不是后
2020-10-14 09:01:41
3834
1
转载 C++中的hpp文件
.hpp文件本质:将.cpp的实现代码混入.h头文件当中,使定义与实现都在同一文件。对该类的调用只需要include该.hpp文件,不需要将cpp加入编译。实现代表直接编译到调用者的.obj文件中,不再生成单独的obj文件。好处:采用hpp将大幅度减少调用project中cpp文件数与编译次数,也不用发布lib与dll文件,因此非常适合来编写公用的开源库。hpp的优点不少,但是编写中有以下几点要注意:1、是Header Plus Plus的简写。(.h和.hpp就如同.c和.cpp似的)2、与.h
2020-10-14 08:31:37
961
原创 C++中std::move移动的意思
简单的说int i = 1+1;这里面i是左值,(1+1)是右值。右值一般都存储在一个临时的空间之中,如上这行代码,先构建一个临时空间存储(1+1),然后把这个(1+1)的结果2赋值给i,再然后把这个临时空间释放掉。接下来我们再进行一个操作int j = i;这是我们经常进行的赋值操作,但更本质的说,这是一个***“复制”操作,也就是说,我把i里面的值给了j,并且我的i仍然存储着那个值,并没有消失。但是如果我们将代码改为下面这样int j = std::move(i);这也是一个赋值操作,
2020-10-10 23:31:27
313
原创 find()和count()永远的神
map之类的容器有自己类定义的find和count,用起来很方便。但是vector却没有专属于自己的,只能用find(v.begin(),v,end(),key)count(v.begin(),v,end(),key)这种函数来进行对vector的查找今天我遇到一道题,想要对vector<vector< int >>进行查找,想了半天各种方法都很繁复,最后尝试了一下用上面的find和count对vector< int >进行查找,竟然成功了,所以find和cou
2020-10-09 22:05:50
1693
1
原创 ‘+=’比‘+’快
如下:a = a + b;a += b;我一直以为两个式子速度是一样的…直到遇到了这道题:求最长回文子串仅仅改了第15行的加法运算,结果竟然是一个超时一个AC…
2020-09-30 11:47:46
347
1
原创 密码学课设 中国剩余定理 Hust
题目#include <stdio.h>#include <gmp.h>#include <iostream> #include<time.h> #include<stdlib.h>#define MAX 1<<16using namespace std;int test_num[] = { 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71
2020-09-29 10:54:46
823
1
原创 密码学课设 RSA参数计算 Hust
题目个人见解这题其实很简单,但是加了几个条件就变难了,首先如果p,q,e组成的RSA加密太弱了的话算错(我也感觉很迷惑,安全性弱也不能算错吧…),所以除了验算这几个参数之间的关系是否正确之外还要验证他们的安全性,即容不容易被破解。e不能太小,很容易理解,e的值越大,计算的难度越高嘛,但是什么样算大什么样算小这就很…感性(?)了。不过根据这道题所有检测数据点的输入来看,只要比65536大就可以了。p和q不能间隔太小,更不能相等(废话)。但是什么样算小呢,这个如果不听老师的话自己测的话,只能自己慢慢
2020-09-29 10:54:38
1720
原创 密码学课设 模重复平方 Hust
题目代码这题非常简单,没什么好说的,唯一要注意的就是mpz_t存储的数都大的吓人,递归甚至是普通的循环都是行不通的(爆栈或超时),要尽量减少循环次数,最好是指数性的减少。void expmod(mpz_t e, mpz_t m, mpz_t N, mpz_t b){ mpz_t i, r, result; mpz_init(i); mpz_init(r); mpz_init(result); mpz_set(i, e); mpz_set_ui(result, 1);
2020-09-29 10:54:31
770
原创 密码学课设 SPN增强 Hust
题目如图个人见解这题就如字面意思,就是SPN加密的加强版。加强的方式无非就是改变密钥长度,改变S盒的加密方式,增加加密轮数等等…因为这次加密的明文很长,所以我一次加密64位,S盒和P盒的内容也要随之改变了。我的主要改变方法就是S盒的加密方法改变,由书上的s[16]改成了s[16][16]置换,其实还可以改进一下,就是让每一轮加密的S[16][16]内容都不相同,但是已经可以过系统的检测了就懒得再改了。P盒由16长度变为了32长度。这题有一个坑就是他给的TIPS,不能用ECB工作模式,所以要用C
2020-09-29 10:54:24
1936
原创 密码学课设 线性逼近 Hust
书上的伪代码实现#include "stdio.h"#include "math.h"#define NUMBER 8000int p[20][20];int L1[8], L2[8], v[20], u[20];int s_1[16] = { 14,3,4,8,1,12,10,15,7,13,9,6,11,2,0,5 }; //S盒的逆void read(int* x){ char c; for (int num = 0; num < 4; num++) { scan
2020-09-29 10:54:15
1488
原创 丢人代码大全
记录一些思路一样,可是性能和简洁性被吊打的我的代码,希望可以慢慢从中学到一些写代码的思考方法和思想leetcode 55.跳跃游戏我class Solution {public: bool canJump(vector<int>& nums) { int max = 0, sign = 0; int flag = 1; while(flag != max) { flag = max;
2020-09-28 20:46:29
172
原创 第一次接触动态规划解题
废话一道力扣easy没做出来…我是fw, orz。看了题解觉得学到了很多,记录下来和大家分享一下。题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号
2020-09-28 19:18:49
222
原创 第208场力扣周赛 —— 最多可达成的换楼请求数目
教训用map<int, int>的我是个憨批,憨批!为什么不用vector< int >把它换掉,为什么!老早就写出来了,但是一直超时超时…所以想尽办法优化,把交<0,0>,<1,1>这种原地tp申请表的哈皮都去掉,减少2^n的指数,结果还是最后几个过不去。我还纳闷不都说大部分暴力没问题吗,结束了去讨论区一看,好家伙暴力解全过了,看了一下不同尝试把map<int,int>存储的楼栋人员数两变化改成用vector< int >直
2020-09-27 13:36:45
169
转载 C++后台研发学习记录 单调栈
今天在leetcode刷题的时候遇到了***121. 买卖股票的最佳时机***上来直接暴力然后超时,查了一下解法和资料,发现单调栈这个东西很有趣,记录一下。主要内容转载自:
2020-09-26 19:56:22
99
原创 密码学课设 SPN实现 Hust
这里写自定义目录标题题目要求未优化的代码,目前只能跑过k=5,再高就跑的太慢了应该是进制转换部分花了太多时间,想想怎么把他优化一下或者跳过这个过程,应该就可以过k=7了。题目要求Input第一行,一个正整数n,表示n组数据。接下来n行,每行包含两个用空格分开的16进制字符串。第一个字符串长度为8,表示32比特密钥key,第二个字符串长度为4,表示16比特明文。对1<=k<=6,第k个数据点点满足n = 10^k。对k=7,n = 4*10^6。TIPS: 需要快速读入Output
2020-09-08 08:58:35
2759
1
原创 组成原理实验 Logisim CPU实验 Hust
这次CPU的作业因为时间很紧,没有仔细研究,基本是照抄同学的,有一些Bug没有改动,所以仅供借鉴,有部分小错误还请自行订正。1.单周期硬布线单周期MIPS(硬布线)单周期硬布线控制器2.多周期微程序多周期MIPS(微程序)多周期微程序控制器微程序地址转移逻辑3.多周期硬布线多周期MIPS(硬布线)多周期硬布线控制器状态机FSM...
2020-06-12 19:28:21
6622
4
原创 组成原理实验 Logisim 运算器实验 Hust
1. 八位可控加减法器2.四位先行进位器3.快速加法器四位十六位三十二位3.原码一位乘法器4.算术逻辑运算单元ALU
2020-06-03 12:52:51
7097
2
原创 组成原理实验 Logisim 码表实验 Hust
1.码表控制器码表控制器状态转换可以利用表达式自动生成电路。表达式N2:~stop ~store ~NewRecord S2 ~S1 ~S0 + ~reset NewRecord S2 ~S1 ~S0 + ~start store ~reset ~NewRecord ~S2 ~S0 + ~start store ~S2 ~S1 ~S0 + stop ~reset S2 ~S1 ~S0 + start ~S2 S1 + start S2 ~S1 ~S0N1:~start ~store ~rese
2020-06-03 12:28:19
3628
原创 组成原理实验 Logisim 同步时序逻辑电路设计实验 Hust
1. 并行加载寄存器四位十六位2.四位BCD计数器计数器状态转换输出函数3.码表计数器
2020-06-03 12:23:19
3829
原创 组成原理实验 Logisim 组合逻辑电路设计实验 Hust
1. LED计数电路2. LED计数测试3.数码管驱动电路较为复杂,建议利用表达式或者真值表自动生成电路。表达式Seg_1:~X3 ~X2 ~X0 + ~X3 ~X2 X1 + ~X3 X2 X0 + X3 ~X2 ~X1Seg_2:~X3 ~X2 + ~X3 ~X1 ~X0 + ~X2 ~X1 + ~X3 X1 X0Seg_3:~X2 ~X1 + ~X3 X0 + ~X3 X2Seg_4:~X2 ~X1 ~X0 + ~X3 ~X2 X1 + ~X3 X1 ~X0 + ~X3 X2 ~X
2020-06-03 12:20:33
6630
2
汽车租赁综合课程设计.zip
2020-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人