Variants单元;可以的。
pascal吧
全部回复
仅看楼主
level 2
StupidJum411 楼主
Variants单元,无意中在FPC\2.0.4\doc\rtl.pdf中翻到的
用其定义变量可以使该变量变成任意类型!
真的????
定义方法
uses variants
var a:variant;
实现uses variants;
var a:variant;
b:char;
c:longint;
d:string;
e:boolean;
begin
b:='a';
c:=65;
d:='aa';
e:=true; //注意variant类型不能用于输入语句,只能赋值
a:=b; write(a);
a:=c; write(a);
a:=d; write(a);
a:=e; write(a);
end.
结果……
输出:
a65aaTrue
*了个**……
然而,评测机可以用这个吗?
我测试了一下各个评测的站点
洛谷:AC
NOI OpenJudge:AC
vijos:MemoryLimitExceeded
咳咳那么说这就可以用了?
数组??可以定义为数组吗?
可以定义为数组……不能赋值为数组……
uses
variants;
var
a:array[1..100] of longint;
x:variant;
begin
fillchar(a,sizeof(a),6);
x:=a;
end.
编译错误
但是我们可以这样
var
x:array[1..100] of variant;
并没有什么*用啊
但是我觉得在平时刷题的时候,variant单元还是非常有用的,可以有效减小内存,AC一些题目
各位觉得?
2017年01月08日 01点01分 1
level 2
StupidJum411 楼主
补图
洛谷评测:
Noi OpenJudge评测:
vijos评测:
不能赋值数组:
2017年01月08日 02点01分 2
level 2
StupidJum411 楼主
……刚刚发现
这个单元有毒
普通做法:
内存是4kB
然而用了variants:
内存是200kB
这……
2017年01月08日 03点01分 4
[喷]时间用得也更多
2017年01月08日 03点01分
variant类型一个就是8字节,不然你认为byte能装下qword[汗]?
2017年01月08日 04点01分
level 4
pwj,你怎么都到这里来了。。[滑稽]
2017年01月08日 04点01分 5
level 10
貌似不用uses variants;
2017年01月09日 11点01分 6
level 3
2018年02月01日 02点02分 7
好一把洛阳铲
2018年02月20日 02点02分
level 8
虽然注意到了日期,但我还是想说:
LZ犯什么傻,NOI根本不允许用uses调用单元[阴险]
但是[滑稽]
我们不用调用任何单元,就可以用指针实现C/C++中的void:
pointer ! (划重点)
由于是指针,所以你得用函数先给他开内存才能赋值[狂汗]
不过你可以在开内存的时候给他指定占用内存的大小[滑稽]
完爆你发现的Variants[滑稽]
2018年02月24日 02点02分 8
1