- 博客(13)
- 收藏
- 关注
原创 C++explicit与implicit
C++explicit与implicit explicit与implicit是C++关键字,其用处是修饰类构造函数。 explicit只能用于修饰只有一个参数的类构造函数,它的作用是表示此类构造函数是显式的而非隐式的,即explicit禁止类构造函数的隐式转换;与其相对应的implicit则代表着隐式的类构造函数,因为在默认的情况下,类构造函数都是隐式的,所以后者没有前者常用,也较少被提及。 但是在C++11的新标准下,对于两个参数以上的构造函数和转换函数也有效,在explicit之后无法使用【等于号+in
2021-06-01 21:15:15
580
原创 C++多个返回值
关于C++中返回多个ruturn值的问题 在实际应用中,常常会遇到需要返回多个函数值的情况,譬如寻找最大值与最小值函数,std::minmax(C++11),或者是遍历数组中所有元素并返回它的所有子集,就会出现需要返回空集+其他集合的情况(力扣78、90)。 其次,在数据结构里当每一项包含多个数值时,那么返回多个值是有益的,在C++里映射容器家族提供了保存键/值对的迭代器,以及类似std::map::find的在逻辑上返回一个对的方法,尽管这个对被封装在一个迭代器对象中。 再者,多返回值可以标识不同的路径,
2021-03-08 09:30:23
4705
原创 std::tuple的使用细则
std::tuple的使用细则 std::tuple是类似pair的模板。每个pair的成员类型都不相同,但每个pair都恰好有两个成员。不同std::tuple类型的成员类型也不相同,但一个std::tuple可以有任意数量的成员。每个确定的std::tuple类型的成员数目是固定的,但一个std::tuple类型的成员数目可以与另一个std::tuple类型不同。 但我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新数据结构来表示这些数据时,std::tuple是非常有用的。我们可以将std::
2021-03-08 09:06:22
1317
原创 博弈论基础
Non-cooperative Game(非合作博弈) 非合作博弈是指一种参与者不可能达成具有约束力的协议的博弈类型,这是一种具有互不相容味道的情形。非合作博弈研究人们在利益相互影响的局势中如何选决策使自己的收益最大,即策略选择问题。 负和博弈和零和博弈统称为非合作博弈,正和博弈亦称为合作博弈。 零和博弈 零和博弈是博弈论的一个概念,属非合作博弈,指参与博弈的双方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加的总和永远为“零”。双方不存在合作的可能。零和博弈的结果是一方吃掉另一方
2021-01-29 23:04:56
602
原创 编程范式
C++四种编程范式小结 1. 面向过程(Procedure Programming, PP) 面向过程编程(Procedure Programming, PP),也被称为命令式编程,也是大家最为熟悉的一种传统的编程方式。从本质上讲,它是“冯.诺伊曼机“运行机制的抽象,它的编程思维方式源于计算机指令的顺序排列。 面向过程编程的步骤: 首先,我们必须将待解问题的解决方案抽象为一系列概念化的步骤。然后通过编程的方式将这些步骤转化为程序指令集(算法),而这些指令按照一定的顺序排列,用来说明如何执行一个任务或解决一个
2021-01-28 01:18:09
411
转载 搭建以太坊
一、准备工作 本教程所用环境:windows 7 64bits 安装geth: https://ethfans.org/wikis/Ethereum-Geth-Mirror 二、搭建过程 1.启动私有链,创建帐户 cmd进入geth安装目录 geth --datadir chain1 --nodiscover console 进入geth控制台模式,其中chain1为帐户和区块数据目录 eth.accounts命令查看现有帐户,当前是空。 下面创建两个帐户,其中1234为密码: personal.new
2021-01-25 20:53:54
709
原创 以太坊
以太坊基础 图灵完备的基础:以太坊虚拟机EVM,类似于JVM 基本概念: 节点:进行区块链读写 矿工:通过hash运算产生工作量的网络节点 挖矿:发行以太币的途径 账户:可以发送交易 外部账户:公私钥对控制,地址由公钥决定 合约账户:部署合约时确定,存储了代码,在收到合法交易后会执行合约代码 Gas:限制执行交易所需的工作量,为执行交易支付费用 EVM:智能合约的运行环境,是一个沙盒,不能进行网络、文件或者执行其他进程 智能合约:代码和数据的集合,存于以太坊区块链的指定地址 交易:交易是通过状态转移来标记的
2021-01-23 00:39:54
759
2
原创 进制转换C语言实现
进制转换C语言实现 所需头文件 #include <stdio.h> #include <string> #include <string.h> #include <map> #include <iostream> using namespace std; 十进制转二进制 //十进制转二进制 string Decimal_to_Binary(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数
2020-12-06 23:21:42
410
原创 自己写操作系统:写一个世界上最小的操作系统
写一个世界上最小的操作系统 在写第一个操作系统之前,我们需要准备硬件和软件 硬件准备 · 一台计算机(windows操作系统) · 一张空白软盘(或者用CD-ROM来代替) 软件准备 · 汇编编译器NASM。可以在此链接下载:汇编编译器下载地址。 · 软盘绝对扇区读写工具 接下来,我们开始写一个最小的操作系统,也与你不相信,这个操作系统仅仅需要20行代码。 代码如下: org 07c00h ;告诉编译器程序加载到7c00处 m
2020-12-06 17:23:18
1394
原创 密码学浅析
密码学浅析 几种密码技术及区块链相关的分析小品 摘要: [密码学历史][简单密码][密码学前瞻] 关键词:【编码学】;【破译学】;【对称密码系统】;【非对称密码系统】 目录: 一、 引言 什么是密码学 密码学发展历史 站在时代的前端——现代密码系统 二、 几种简单的密码分析 维吉尼亚密码 凯撒密码 栅栏加密法 朱高密码 RSA算法 ECC加密法 四方密码 替换加密法 波雷费密码 RC5算法 ADFGVX密码 希尔密码 维热纳尔方阵 埃特巴什码 三、 破译学简析 四、 密码学与区块链相
2020-12-03 23:51:04
4336
原创 区块链的定义、分类与原理
区块链的定义、分类与原理 在中本聪所撰写的《Bitcoin:A Peer-to Peer Electronic Cash System》中首次提出了区块链(Blockchain)的描述性概念,但此著作主要讨论比特币(Bitcoin)系统,对于区块链却并没有过于深入的汇总与精炼,实际上并没有提出客观意义上的定义与概念。在此书中,区块链是用于记录比特币交易账目历史的数据结构。 区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实
2020-12-01 17:12:57
6628
原创 C语言内存分区与存储类型
C语言内存分区与存储类型 在C语言中,数据的存储类型可以改变它的作用域和周期。变量的作用域不同,从本质上来讲是因为它的存储类型有差异。自动类型和寄存器的变量属于动态存储方式;而外部类型和静态类型属于静态存储方式。 在具体了解存储类型之前,需要先了解可执行文件加载进内存后形成的进程在内存中的结构: 1.代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。 2.数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。 3.BBS区:存放的是未初始化的全局变量和静态变量。 4.栈区:由编译器
2020-11-28 10:57:24
335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅