1. double cast,好玩的红白机游戏有哪些?
哈喽大家好,我是魔音小C!说起红白机,也就是任天堂游戏机,那可真是最经典的童年回忆了!
小C小时候虽然是女孩子,但也是游戏迷,红白机游戏成千上万,不说全都玩过吧,大概玩过的也得有上千款。最好玩的肯定也是最经典的,下面小C就来盘点十五款最好玩的红白机游戏吧!
1、《超级玛丽》说到红白机,不得不说的就是《超级玛丽》也叫《马里奥兄弟》,讲述的是作为水管工的马里奥两兄弟为了营救公主而做的一系列冒险,属于冒险类通关游戏,设置八个大关卡,都有不同的主题,比如第一关是地面,第二关是地下王国,后面还有空中世界等等,马里奥兄弟可以通过顶砖块获取金币和道具,在特定地点获得变大蘑菇和射击蘑菇,使自己变强。游戏节奏很快,看似简单,想要完全通关并不那么容易,况且那时候的游戏还不能存档,只能一次过。印象最深刻的是,《超级玛丽》有几个神秘的跳关点,我记得是从第二关可以跳到第四关,从第五关可以跳到第八关,但即使是跳关,第八关也很难通关哦!
2、《魂斗罗》《魂斗罗》的知名度完全不亚于《超级玛丽》,可以选择单人、双人玩,是一款著名的卷轴射击游戏,游戏背景在这里就不多说了,总之就是两个战斗精英攻击异性秘密基地的故事。游戏中一开始英雄的枪都是最普通的豆豆枪,通过射击一些鹰标或者一些特殊的敌人可以获得特殊枪械,比如大家最喜欢的散弹枪。游戏还有“上上下下左右左右BABA”的神秘加人密码,可以在游戏开始前迅速按下密码,生命数可以由三个变为三十个,通关更容易!
3、《沙罗曼蛇》这是一款飞行射击类通关游戏,游戏中玩家驾驶的飞船只能一直向前飞,通过太空中令人眼花缭乱的各种神秘地带,最终目的是打倒一支名为沙罗曼蛇的部队。游戏的音效和BGM非常不错,柔和而振奋,操作手感也非常流畅,玩家可以通过击中随机出现的能力补充备品升级自己的枪械等,每一大关会出现一个大BOSS,一般都要找准要害来攻击。在游戏开始前,也有神秘加人密码“右左下上BA”可以加到30命。
4、《松鼠大作战》游戏延用迪士尼动画片《松鼠大作战》里的两只可爱花栗鼠奇奇和蒂蒂,从寻找小猫咪的委托任务开始,到摆脱肥猫陷阱与其一决高下为故事内容。人物设定非常可爱,游戏画面在同期类似冒险类游戏中可谓是精品之作,有很多脑洞大开的游戏场景,比如厨房的锅碗瓢盆,电线上的冒险……也是可以选择单人或双人协作,可互助又可互攻,流畅度,创造力与可玩性均为同类游戏中的领军者,到现在仍然觉得非常怀念,记忆犹新!
5、《双截龙》系列(但小C玩的应该是二代和三代)据说游戏背景是兄弟二人被人蒙蔽,从而为了一个女人手足相残,但后来经过重重阻碍终于言归于好,为了消灭杀害玛利亚的幻影战士从而奋起追杀的故事。虽然故事情节有点奇怪,但游戏的可玩性还是不错的。《双截龙》属于卷轴类动作冒险游戏,可以单人玩也可以双人协作。
6、《恶魔城》《恶魔城》也是红白机时代的一款经典游戏,它采用哥特基调的角色图案与背景图像,与诡异风格的BGM组合,产生了一款非常独特的卷轴类通关ACT游戏。恶魔城中的敌人除了西洋传统怪物外,还有各种电影、小说里登场的怪物,恶魔城可说是众多怪物的大杂烩聚集地。游戏的主角是一名青年吸血鬼猎人,他的武器有皮鞭、短剑、圣水、十字架、斧、怀表等,其他辅助类的道具也很多元,游戏难度不低。
7、《荒野大镖客》《荒野大镖客》以1849年美国西部为背景,要求玩家通过控制A、B键射击,最终打败洗劫村庄的强盗团,是一款竖版射击动作类游戏。虽然《荒野大镖客》没有《超级玛丽》、《魂斗罗》那么家喻户晓,但也是红白机时代的一款经典游戏,丰富的加速靴子、冲锋枪、马匹和无敌、1UP等道具使得这款射击游戏可以与同时代的1943等飞机类游戏比拟。更难能可贵的是游戏还加入了后来RPG广泛采用的积累金钱,购买特殊道具的功能。虽然特殊道具的数量很有限(只有子弹、马匹、通缉令、霰弹枪、机枪、闪光弹)。
8、《赤色要塞》游戏中玩家开战车驶入敌方,与敌方作战,遇见牢房,则解救人质,在指定直升机场将人质送到接应直升机。每一关的末尾都要经过一场激烈的战斗才能进入下一关。有多个场景与不同的武器,解救人质或者获取积分宝物时,火力会增强,游戏紧张好玩。
9、《七宝奇谋》绝对是FC上游戏性最高的游戏之一。宏大的场景,充实的内容,多样化的游戏方式,丰富的隐藏要素。。。一派大作风范。简单说,游戏的主要目的就是在每关中找到散落各处的钥匙,以打开相应的“门”,打通道路。游戏同时考验着玩家的反应力,记忆力和协调能力等,是FC上一款不可多得的好游戏。
10、《冒险岛》又称《高桥名人之冒险岛》,与《超级玛丽》类似,是一款著名的卷轴冒险类游戏。游戏的目的是救出主角高桥名人的恋人蒂娜。整个游戏共有8大关卡,每一个大关又分为4个小关。
11、《西游记》也叫《西游记世界》,是当时红白机游戏中少有的ARPG游戏。高自由度,RPG元素,迷宫关卡,支线任务,各种丰富的道具、装备和隐藏内容让这款游戏在当时堪称惊艳!虽然当时玩的都是日文版,对话都靠猜,但也有一种说不出来的神秘感,包括攒钱购买的一些道具,有很多也说不出来到底是什么,不过还是觉得特别有趣!
12、《三目童子》 改编自同名漫画,是一款卷轴动作冒险类游戏。游戏中,主角写乐使用三种子弹和红色神鹰开始一场营救之旅。最终BOSS同样是三目族成员,而且是古代三目王子,能力在写乐之上,借助和登的身体行动。 游戏中金币的设定非常有意思,可以武器、血量和生命、急救鸟 200(仅限Hard模式购买)。玩家要是有闲心,还可以将所有的金币全部打到最大,钱就会多几十倍。游戏中有大量隐藏元素,包括隐藏商店和隐藏火鸡。
13、《淘金者》也是一款特别经典的红白机游戏。游戏中,你必须在敌人抓住你之前取得所有的金子,并跑出逃生的路口。 如果你取得了游戏中的全部金子,出口的通道就会打开,走到那儿往上爬,就算过关了。想要过关并不容易,有的地点过去就出不来,必须算计好先拿什么后拿什么,非常考验应变能力。
14、《兵蜂》这是一款非常著名的竖版飞行射击类游戏,记得小时候想找这部游戏真不容易,很多卡带目录显示着有,实际上却没有。《兵蜂》的游戏背景非常奇幻,游戏画面和配色非常卡哇伊,连敌人也都是水果之类的可爱物品,是女孩特别喜欢的一款射击游戏,游戏中最独特的就是铃铛升级系统,最普通的黄色铃铛只能加分,但如果你朝这种铃铛射击,它们的颜色会发生改变,并成为有用的增补道具.蓝色铃铛可以加速,白色可以加强武器,红色是防盾,绿色则可以增加镜像攻击。玩转《兵蜂》也不是件容易事,单打尤其困难,铃铛升级系统真是让人又爱又恨,掉落速度快、颜色变换难以掌握、影响对敌专注力,真的很难打。
15、《忍者神龟》红白机时代的经典之作,改编于当时特别著名的动漫《忍者神龟》,动作冒险类游戏,四个角色可选,可选单人或双人协作。
每个角色都保留了该角色的武器特点及属性,流畅度和可玩性非常好,也是小C当时最常玩的游戏之一。
好了,以上就是小C吐血总结的十五款最经典、最好玩的红白机游戏。当然了,红白机时代的游戏真的太多太多了,还有许多有趣的游戏没有上榜,比如《炸弹人》、《马戏团》、《大力水手》、《辛巴达》、《坦克大战》……还有被誉为任天堂四强之一的《绿色兵团》(这款游戏虽然著名又风靡,但却不是小C喜欢的游戏类型,因为它充满了冷战时期的色彩,真的感觉冷冰冰的,游戏目标是玩家控制人物,通过个6关卡,炸毁核武器装置)
虽然现在红白机不好找了,但是很多游戏还可以通过模拟器重温!有兴趣的小伙伴可以找出来玩一下,最好是有游戏手柄,玩起来一定是超级有感觉哒!!!
2. 如何用VB做一个简单计算器要求实现加减乘除乘方开方功能?
在VB中,你可以通过使用按钮和文本框控件以及相应的事件处理程序来实现一个简单计算器,满足你的要求。下面是一个示例代码:
首先,在VB的窗体上放置以下控件:
1. 一个文本框 (TextBox1) 用于显示计算结果和用户输入的表达式。
2. 数字按钮 (Button0, Button1, Button2, ..., Button9) 用于用户输入数字。
3. 加减乘除按钮 (ButtonAdd, ButtonSubtract, ButtonMultiply, ButtonDivide) 用于各个运算符。
4. 幂运算按钮 (ButtonPower) 用于计算乘方。
5. 开方按钮 (ButtonSqrt) 用于计算开方。
6. 清空按钮 (ButtonClear) 用于清空计算结果和输入。
然后,在窗体的代码区域添加以下代码:
```VB
Dim result As Double = 0 ' 用于保存计算结果
Dim OperatorSymbol As String = "" ' 用于保存当前运算符
' 数字按钮的点击事件
Private Sub Buttonnumber_Click(sender As Object, e As EventArgs) Handles Button0.Click, Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click
Dim numberButton As Button = DirectCast(sender, Button)
TextBox1.Text &= numberButton.Text ' 将点击的数字追加到文本框中
End Sub
' 运算符按钮的点击事件
Private Sub ButtonOperator_Click(sender As Object, e As EventArgs) Handles ButtonAdd.Click, ButtonSubtract.Click, ButtonMultiply.Click, ButtonDivide.Click, ButtonPower.Click
Dim operatorButton As Button = DirectCast(sender, Button)
operatorSymbol = operatorButton.Text ' 记录当前运算符
result = Val(TextBox1.Text) ' 将当前的数字文本转换为数值,并保存到result中
TextBox1.Clear()
End Sub
' 开方按钮的点击事件
Private Sub ButtonSqrt_Click(sender As Object, e As EventArgs) Handles ButtonSqrt.Click
Dim number As Double = Val(TextBox1.Text) ' 将当前的数字文本转换为数值
result = Math.Sqrt(number) ' 计算开方
TextBox1.Text = result.ToString() ' 显示计算结果
End Sub
' 清空按钮的点击事件
Private Sub ButtonClear_Click(sender As Object, e As EventArgs) Handles ButtonClear.Click
TextBox1.Clear()
result = 0
operatorSymbol = ""
End Sub
' 等号按钮的点击事件
Private Sub ButtonEqual_Click(sender As Object, e As EventArgs) Handles ButtonEqual.Click
Dim number As Double = Val(TextBox1.Text) ' 将当前的数字文本转换为数值
Select Case operatorSymbol ' 根据运算符进行相应的计算
Case "+"
result += number
Case "-"
result -= number
Case "*"
result *= number
Case "/"
result /= number
Case "^"
result = Math.Pow(result, number)
End Select
TextBox1.Text = result.ToString() ' 显示计算结果
End Sub
```
在示例代码中,我们使用了数值类型 Double 来保存计算结果,并使用 Val 函数将文本转换为数值。通过处理按钮的点击事件,我们根据用户输入的数字和运算符进行相应的计算,并将结果显示在文本框中。
这只是一个简化的示例,你可以根据需求进行扩展和优化,添加更多的功能和错误处理。
3. 上转换和下转换的区别?
上转换和下转换是两个常用的数据类型转换概念,它们在编程和计算中经常被使用。下面是它们的区别:
1. 上转换(Upcasting):上转换是指将一个子类对象转换为其父类类型的过程。这种转换是隐式的,不需要显式地进行类型转换操作。上转换是安全的,因为子类对象具有父类的所有属性和方法,所以可以将子类对象视为父类对象使用。上转换的一个常见应用是多态性的实现。
2. 下转换(Downcasting):下转换是指将一个父类对象转换为其子类类型的过程。这种转换是显式的,需要使用类型转换操作符(如强制类型转换)来进行。下转换是有风险的,因为父类对象可能不具备子类特有的属性和方法,如果进行错误的下转换,可能会导致运行时错误(ClassCastException)。因此,在进行下转换之前,应该先使用instanceof运算符进行类型检查,确保对象是可以安全地进行下转换的。
总结来说,上转换是将子类对象视为父类对象使用的隐式转换,而下转换是将父类对象强制转换为子类对象的显式转换,需要进行类型检查和转换操作。在进行下转换时,需要注意类型检查和避免类型转换错误,以确保程序的正确性和安全性。
4. 的差异是什么?
C++是在C语言的基础上开发的一种通用编程语言。所以C++可以直接使用C语言的语法及头文件。反过来C则不可完全用C++的语法。C++语言在变量、输入输出、引用类型、堆栈内存申请、结构体上都与C语言都存在差异,同时C++新增加了重载,类之类的实现面向对象编程。
1、 变量
C++中增加了bool布尔类型,只占1个字节内存空间。
C中则没有。C 中要用int 类型定义,占空间较多,不方便。
2、 输入输出区别
C语言用scanf()、printf()函数作入输入、输出函数。用法较复杂。
C++则用cin、cout作为输入、输出。用法较简单,不易出错。
3、 堆栈内存申请
C语言用malloc申请内存空间,用free释放。C++则用new申请,用delete释放。
4、 引用形参
C++中函数可以使形参,C中则没有此用法。
5、 函数重载
C++中函数名可以相同,只要参数个数、类形不一样则可。在C中就不可以。
6、 结构体
C++中对struct结构体进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了。它可以包含成员函数、能继承、能实现多态。这使得C++可以实现面向对象编程。C++中用class关键定义类。
5. 如何将double型转换为uint型?
在 C++ 中,将 double 类型转换为 uint 类型可以使用类型转换操作符或者使用标准库中的函数。
方法一:使用类型转换操作符
cpp
Copy Code
double doubleValue = 3.14;
uint32_t uintValue = static_cast<uint32_t>(doubleValue);
上述代码中,static_cast<uint32_t> 是一个静态转换操作符,将 double 值 doubleValue 转换为 uint32_t 类型的值。
方法二:使用标准库中的函数
cpp
Copy Code
#include <cstdint>
#include <cmath>
double doubleValue = 3.14;
uint32_t uintValue = static_cast<uint32_t>(std::round(doubleValue));
上述代码中,我们使用 <cmath> 头文件中的 std::round 函数来对 double 值进行四舍五入,并将其转换为 uint32_t 类型的值。
需要注意的是,当 double 值大于或小于 uint 类型的取值范围时,转换结果可能会出现截断或溢出。因此,在进行转换时,请确保 double 值在 uint 类型的合法范围内。
此外,根据具体需求,您可以根据目标类型选择其他合适的类型,比如 uint16_t、uint64_t 等等。
6. 24时区对应国家?
NZDT +13:00 新西兰夏时制
IDLE +12:00 国际日期变更线,东边
NZST +12:00 新西兰标准时间
NZT +12:00 新西兰时间
AESST +11:00 澳大利亚东部标准夏时制
ACSST +10:30 中澳大利亚标准夏时制
CADT +10:30 中澳大利亚夏时制
SADT +10:30 南澳大利亚夏时制
AEST +10:00 澳大利亚东部标准时间
EAST +10:00 东澳大利亚标准时间
GST +10:00 关岛标准时间,俄罗斯时区 9
LIGT +10:00 澳大利亚墨尔本
SAST +09:30 南澳大利亚标准时间
CAST +09:30 中澳大利亚标准时间
AWSST +09:00 澳大利亚西部标准夏时制
JST +09:00 日本标准时间,(俄罗斯时区 8)
KST +09:00 韩国标准时间
MHT +09:00 Kwajalein Time
WDT +09:00 西澳大利亚夏时制
MT +08:30 毛里求斯(moluccas)时间(?)
AWST +08:00 澳大利亚西部标准时间
CCT +08:00 中国沿海时间
WADT +08:00 西澳大利亚夏时制
WST +08:00 西澳大利亚标准时间
JT +07:30 爪哇时间
ALMST +07:00 Almaty 夏令时
WAST +07:00 西澳大利亚标准时间
CXT +07:00 ChrISTmas (复活节?)岛时间
MMT +06:30 Myannar 时间
ALMT +06:00 Almaty 时间
MAWT +06:00 Mawson (Antarctica) Time
IOT +05:00 印度 Chagos 时间
MVT +05:00 Maldives (?)岛时间
TFT +05:00 Kerguelen 时间
AFT +04:30 阿富汗时间
EAST +04:00 Antananarivo Summer Time
MUT +04:00 Mauritius Island Time
RET +04:00 Reunion Island Time
SCT +04:00 Mahe Island Time
IRT, IT +03:30 伊朗时间
EAT +03:00 Antananarivo, Comoro Time
BT +03:00 巴格达时间
EETDST +03:00 东欧夏时制
HMT +03:00 Hellas Mediterranean Time (?)
BDST +02:00 British Double Standard Time
CEST +02:00 中欧夏令时
CETDST +02:00 中欧夏时制
EET +02:00 东欧,(俄国时区 1)
FWT +02:00 法国冬时制
IST +02:00 以色列标准时间
MEST +02:00 中欧夏时制
METDST +02:00 中欧白昼时间
SST +02:00 瑞典夏时制
BST +01:00 英国夏时制
CET +01:00 中欧时间
DNT +01:00 Dansk Normal Tid
FST +01:00 法国夏时制
MET +01:00 中欧时间
MEWT +01:00 中欧冬时制
MEZ +01:00 Mitteleurop溟sche Zeit
NOR +01:00 挪威标准时间
SET +01:00 Seychelles Time(?)
SWT +01:00 瑞典冬时制
WETDST +01:00 西欧光照利用时间(夏时制)
GMT 0:00 格林威治标准时间
UT +00:00 全球时间
UTC +00:00 校准的全球时间
z +00:00 和 UTC 相同
ZULU +00:00 和 UTC 相同
WET +00:00 西欧
WAT -01:00 西非时间
FNST -01:00 Fernando de Noronha 夏令时
FNT -02:00 Fernando de Noronha 时间
BRST -02:00 Brasilia 夏令时
NDT -02:30 纽芬兰(Newfoundland)白昼时间
ADT -03:00 大西洋白昼时间
AWT -03:00 (未知)
BRT -03:00 Brasilia 时间
NFT -03:30 纽芬兰(Newfoundland)标准时间
NST -03:30 纽芬兰(Newfoundland)标准时间
AST -04:00 大西洋标准时间(加拿大)
ACST -04:00 Atlantic/Porto Acre 夏令时
ACT -05:00 Atlantic/Porto Acre 标准时间
EDT -04:00 东部白昼时间
CDT -05:00 中部白昼时间
EST -05:00 东部标准时间
CST -06:00 中部标准时间
MDT -06:00 山区白昼时间(译注:Mountain Daylight Time那位知道怎么译?)
MST -07:00 山区标准时间
PDT -07:00 太平洋白昼时间
AKDT -08:00 阿拉斯加白昼时间
PST -08:00 太平洋标准时间
YDT -08:00 Yukon 白昼时间
AKST -09:00 阿拉斯加标准时间
HDT -09:00 夏威仪/阿拉斯加白昼时间
YST -09:00 Yukon 标准时
MART -09:30 马克萨司群岛时间
AHST -10:00 夏威夷-阿拉斯加标准时间
HST -10:00 夏威夷标准时间
CAT -10:00 中阿拉斯加时间
NT -11:00 州时间(Nome Time)
IDLW -12:00 国际日期变更线,西边
澳大利亚时区. 澳大利亚时区名和南北美常用的时区名之间有三个冲突: ACST,CST,和 EST。
澳大利亚时区缩写
时区 与 UTC 的偏移量 描述
ACST +09:30 中澳大利亚标准时间
CST +10:30 澳大利亚中部标准时间
EST +10:00 澳大利亚东部标准时间
SAT +09:30 南澳大利亚标准时间
7. eigen库多少个函数?
eigen共有14个基本函数,上千个无限函数。
#include <iostream>using namespace std;#include <ctime>
// Eigen 部分
#include <Eigen/Core>
// 稠密矩阵的代数运算(逆,特征值等)
#include <Eigen/Dense>
#define MATRIX_SIZE 50
/****************************
* 本程序演示了 Eigen 基本类型的使用
****************************/
int main( int argc, char** argv )
{
// Eigen 中所有向量和矩阵都是Eigen::Matrix,它是一个模板类。它的前三个参数为:数据类型,行,列
// 声明一个2*3的float矩阵
Eigen::Matrix<float, 2, 3> matrix_23;
// 同时,Eigen 通过 typedef 提供了许多内置类型,不过底层仍是Eigen::Matrix
// 例如 Vector3d 实质上是 Eigen::Matrix<double, 3, 1>,即三维向量
Eigen::Vector3d v_3d;
// 这是一样的
Eigen::Matrix<float,3,1> vd_3d;
// Matrix3d 实质上是 Eigen::Matrix<double, 3, 3>
Eigen::Matrix3d matrix_33 = Eigen::Matrix3d::Zero(); //初始化为零
// 如果不确定矩阵大小,可以使用动态大小的矩阵
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > matrix_dynamic;
// 更简单的
Eigen::MatrixXd matrix_x;//大小在运行时被赋值后才知道 矩阵
// 这种类型还有很多,我们不一一列举
// 下面是对Eigen阵的操作
// 输入数据(初始化)
matrix_23 << 1, 2, 3, 4, 5, 6;
// 输出
cout << matrix_23 << endl;
// 用()访问矩阵中的元素
for (int i=0; i<2; i++) {
for (int j=0; j<3; j++)
cout<<matrix_23(i,j)<<"\t";
cout<<endl;
}
// 矩阵和向量相乘(实际上仍是矩阵和矩阵)
v_3d << 3, 2, 1;
vd_3d << 4,5,6;
// 但是在Eigen里你不能混合两种不同类型的矩阵,像这样是错的
// Eigen::Matrix<double, 2, 1> result_wrong_type = matrix_23 * v_3d;
// 应该显式转换
//cast 强制类型转换
Eigen::Matrix<double, 2, 1> result = matrix_23.cast<double>() * v_3d;
cout << result << endl;
Eigen::Matrix<float, 2, 1> result2 = matrix_23 * vd_3d;
cout << result2 << endl;
// 同样你不能搞错矩阵的维度
// 试着取消下面的注释,看看Eigen会报什么错
// Eigen::Matrix<double, 2, 3> result_wrong_dimension = matrix_23.cast<double>() * v_3d;
// 一些矩阵运算
// 四则运算就不演示了,直接用+-*/即可。
matrix_33 = Eigen::Matrix3d::Random(); // 随机数矩阵
cout << matrix_33 << endl << endl;
cout << matrix_33.transpose() << endl; // 转置
cout << matrix_33.sum() << endl; // 各元素和
cout << matrix_33.trace() << endl; // 迹
cout << 10*matrix_33 << endl; // 数乘
cout << matrix_33.inverse() << endl; // 逆
cout << matrix_33.determinant() << endl; // 行列式
// 特征值
// 实对称矩阵可以保证对角化成功
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> eigen_solver ( matrix_33.transpose()*matrix_33 );
cout << "Eigen values = \n" << eigen_solver.eigenvalues() << endl; //特征值
cout << "Eigen vectors = \n" << eigen_solver.eigenvectors() << endl;//特征向量
// 解方程
// 我们求解 matrix_NN * x = v_Nd 这个方程
// N的大小在前边的宏里定义,它由随机数生成
// 直接求逆自然是最直接的,但是求逆运算量大
Eigen::Matrix< double, MATRIX_SIZE, MATRIX_SIZE > matrix_NN;
matrix_NN = Eigen::MatrixXd::Random( MATRIX_SIZE, MATRIX_SIZE );
Eigen::Matrix< double, MATRIX_SIZE, 1> v_Nd;
v_Nd = Eigen::MatrixXd::Random( MATRIX_SIZE,1 );
clock_t time_stt = clock(); // 计时
// 直接求逆
Eigen::Matrix<double,MATRIX_SIZE,1> x = matrix_NN.inverse()*v_Nd;
cout <<"time use in normal inverse is " << 1000* (clock() - time_stt)/(double)CLOCKS_PER_SEC << "ms"<< endl;
// 通常用矩阵分解来求,例如QR分解,速度会快很多
time_stt = clock();
x = matrix_NN.colPivHouseholderQr().solve(v_Nd);
cout <<"time use in Qr decomposition is " <<1000* (clock() - time_stt)/(double)CLOCKS_PER_SEC <<"ms" << endl;
return 0;
}