避免重复代码——know your library(续)
2009-06-03 08:30:30 来源:WEB开发网核心提示: 可惜装这VS2010CTP的机器现在不在手上,不然倒可以试试我有没有记错C++0x里的lambda语法,避免重复代码——know your library(续)(3),没错,VS2010已经支持部分的C++0x标准了,如果用tuple,要对这样一个list排序的话…&hell
可惜装这VS2010CTP的机器现在不在手上,不然倒可以试试我有没有记错C++0x里的lambda语法。没错,VS2010已经支持部分的C++0x标准了,很多东西都会变得更方便 XD
不过VS2010支不支持新的range-based for statement来着?忘了……查了一下,发现是不会 T T
因为这个新的for循环语句是基于concept,而concept在VC10的编译器的编写过程中还没定案,所以……T T
当然,如果Person这个struct有一个公认的自然顺序,那最好还是直接在里面重载<运算符,那样要排序的话就能直接用两个参数版本的sort()了。不过这里举的例子是题目,struct里的内容不让改,也就罢了。
题外话,不过这样的一个裸struct在F#里用tuple或者record来表示也可以嘛。如果用tuple,要对这样一个list排序的话……
F#代码
let l = [(2, "smith"); (1, "john"); (2, "micheal"); (1, "micheal"); (3, "albert")]
List.sort compare l;;
// val it : (int * string) list = [(1, "john"); (1, "micheal"); (2, "micheal"); (2, "smith"); (3, "albert")]
用List.sort compare就行了 T T 还有什么能比这个更方便的么?
Hmm,Ruby要是不用Struct来建个类型而是直接用数组的话……
Ruby代码
l = [[2, "smith"], [1, "john"], [2, "micheal"], [1, "micheal"], [3, "albert"]]
l.sort
#=> [[1, "john"], [1, "micheal"], [2, "micheal"], [2, "smith"], [3, "albert"]]
脚本语言用起来不爽的话就没存在价值了 XDD
牢骚一篇,结束(逃
[]
更多精彩
赞助商链接