什么是更好的:void foo()
或void foo(void)
?随着虚空,它看起来丑陋和不一致,但我被告知它是好的.这是真的?
编辑:我知道一些旧的编译器做了奇怪的事情,但如果我只使用GCC,那void foo()
好吗?将foo(bar);
随后被接受?
为什么似乎没有人在C++中使用元组,无论是Boost元组库还是TR1的标准库?我已经阅读了很多C++代码,我很少看到元组的使用,但我经常看到很多地方元组会解决许多问题(通常从函数返回多个值).
元组允许你做这样的各种酷事:
tie(a,b) = make_tuple(b,a); //swap a and b
Run Code Online (Sandbox Code Playgroud)
这肯定比这更好:
temp=a;
a=b;
b=temp;
Run Code Online (Sandbox Code Playgroud)
当然你总能做到这一点:
swap(a,b);
Run Code Online (Sandbox Code Playgroud)
但是如果要旋转三个值怎么办?你可以用元组做到这一点:
tie(a,b,c) = make_tuple(b,c,a);
Run Code Online (Sandbox Code Playgroud)
元组还使得从函数返回多个变量变得更加容易,这可能是比交换值更常见的情况.使用对返回值的引用肯定不是很优雅.
我没有想到的元组有什么大的缺点吗?如果没有,为什么他们很少使用?他们慢了吗?或者只是人们不习惯他们?使用元组是个好主意吗?
我正在寻找一个选项,gcc
它会使它从标准输入读取一个源文件,主要是因为我可以做这样的事情从flex
生成C代码的工具生成一个目标文件(flex
's -t
选项写入生成的C到标准输出):
flex -t lexer.l | gcc -o lexer.o -magic-option-here
Run Code Online (Sandbox Code Playgroud)
因为我并不真正关心生成的C文件.
这样的事情是存在的,还是我必须使用临时文件?
如果我错了,请纠正我,但似乎Haskell中的代数数据类型在许多你将在OO语言中使用类和继承的情况下都很有用.但是有一个很大的区别:一旦声明了代数数据类型,它就无法在其他地方扩展.它是"封闭的".在OO中,您可以扩展已定义的类.例如:
data Maybe a = Nothing | Just a
Run Code Online (Sandbox Code Playgroud)
以后我无法以某种方式为此类型添加另一个选项而不修改此声明.那么这个系统有什么好处呢?似乎OO方式可以更加可扩展.
在纯函数式语言中,数据是不可变的.通过引用计数,创建引用周期需要更改已创建的数据.似乎纯函数式语言可以使用引用计数而不必担心循环的可能性.我是对的?如果是这样,他们为什么不呢?
我知道在许多情况下引用计数比GC慢,但至少它减少了暂停时间.如果暂停时间不好,可以选择使用引用计数.
garbage-collection functional-programming memory-management reference-counting purely-functional
你知道是否有一个UNIX命令会告诉我我的Sun OS UNIX机器的CPU配置是什么?我也在尝试确定内存配置.是否有一个UNIX命令会告诉我这个?
在我看来,函数式编程是一件好事.它消除了状态,使得自动使代码并行运行变得更加容易.
许多首先教授命令式编程风格的程序员发现学习函数式编程非常困难,因为它是如此不同.我开始怀疑那些先学习函数式编程的程序员是否会发现很难开始命令式编程.看起来它不会像其他方式那么难,所以我认为如果更多的程序员首先学习函数式编程会是一件好事.
所以,我的问题是,如果在命令式之前在学校教授函数式编程,那么,为什么从它开始并不常见?
我决定学习D,我想知道我应该使用哪个标准库.我应该使用Phobos还是Tango?各自的优点和缺点是什么?
我对数据库很陌生,所以如果这是一个愚蠢的问题,请原谅我.
在现代数据库中,如果我使用索引访问行,我相信这将是O(1)复杂性.但是,如果我执行查询以选择另一列,它将是O(1)还是O(n)?数据库是否必须遍历所有行,还是为每列构建排序列表?
优点:
缺点:
特别是; 对于某些设置上的数据库登录计算机输入的密码怎么办?