如何在Python中实现通用树?这有内置的数据结构吗?

你能给我解释一下管理UIViewController生命周期的正确方式吗?

特别地,我想知道如何使用初始化,ViewDidLoad, ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear, ViewDidUnload和Dispose方法在UIViewController类的Mono Touch。

我感兴趣的是:c++中类似std::pair的c#是什么?我找到System.Web.UI.Pair类,但我更喜欢基于模板的东西。

谢谢你!

什么时候应该使用字典、列表或集合?

是否存在更适合每种数据类型的场景?

我正在使用Laravel 4。我想使用Laravel的刀锋模板引擎在视图中访问@if条件内的当前URL,但我不知道如何做到这一点。

我知道可以使用<?php echo URL::current();但是在@if blade语句中是不可能的。

有什么建议吗?

我试着用一个明确的清单回答两个问题:

Redis使用的底层数据结构是什么? 每种类型的主要优点/缺点/用例是什么?

我读过Redis列表实际上是用链表实现的。但对于其他类型,我无法挖掘出任何信息。此外,如果有人无意中发现了这个问题,并且对修改或访问不同数据结构的利弊没有一个高层次的总结,那么他们也会有一个完整的列表,知道什么时候最好使用特定类型来引用。

具体来说,我希望概述所有类型:字符串,列表,集,zset和散列。

哦,到目前为止,我已经看过这些文章了:

http://redis.io/topics/data-types http://redis.io/topics/data-types-intro http://redis.io/topics/faq

这可能是一个微不足道的问题,但我想知道Laravel是否推荐了一种特定的方法来检查从$result = Model::where(…)->get()返回的Eloquent集合是否为空,以及计算元素的数量。

我们目前正在使用!$result来检测空结果,这足够了吗?至于count($result),它实际上涵盖了所有情况,包括空结果吗?

在b-树中,您可以将键和数据存储在内部节点和叶节点中,但在b+树中,您必须仅将数据存储在叶节点中。

在b+树中这样做有什么好处吗?

为什么不在所有地方都使用b-树而不是b+树,因为直觉上它们看起来更快?

我的意思是,为什么需要在b+树中复制键(数据)?

简要背景:许多(大多数?)当代广泛使用的编程语言至少有一些共同的adt[抽象数据类型],特别是,

字符串(由字符组成的序列) List(值的有序集合)和 基于映射的类型(将键映射到值的无序数组)

在R编程语言中,前两者分别实现为字符和向量。

当我开始学习R时,有两件事几乎从一开始就很明显:list是R中最重要的数据类型(因为它是R data.frame的父类),其次,我就是不理解它们是如何工作的,至少在我的代码中不能正确地使用它们。

首先,在我看来,R的列表数据类型是映射ADT的直接实现(Python中的字典,Objective C中的NSMutableDictionary, Perl和Ruby中的散列,Javascript中的对象文字,等等)。

例如,创建它们就像创建Python字典一样,通过将键值对传递给构造函数(在Python中是dict而不是list):

x = list("ev1"=10, "ev2"=15, "rv"="Group 1")

访问R List中的项就像访问Python字典中的项一样,例如x['ev1']。同样,你可以通过以下方法检索“键”或“值”:

names(x)    # fetch just the 'keys' of an R list
# [1] "ev1" "ev2" "rv"

unlist(x)   # fetch just the 'values' of an R list
#   ev1       ev2        rv 
#  "10"      "15" "Group 1" 

x = list("a"=6, "b"=9, "c"=3)  

sum(unlist(x))
# [1] 18

但R列表也不同于其他地图类型的adt(从我学过的语言中)。我猜这是S的初始规范的结果,也就是说,打算从头开始设计一种数据/统计DSL[领域特定语言]。

R列表与其他广泛使用的语言中的映射类型之间的三个显著区别(例如:Python, Perl, JavaScript):

首先,R中的列表是一个有序的集合,就像向量一样,即使值是键(即键可以是任何可哈希的值,而不仅仅是连续的整数)。其他语言中的映射数据类型几乎总是无序的。

其次,即使在调用函数时没有传入列表,即使返回列表的函数不包含(显式)列表构造函数,也可以从函数返回列表(当然,在实践中可以通过调用unlist来包装返回的结果来处理这个问题):

x = strsplit(LETTERS[1:10], "")     # passing in an object of type 'character'

class(x)                            # returns 'list', not a vector of length 2
# [1] list

R列表的第三个特殊特性:它们似乎不能成为另一个ADT的成员,如果您尝试这样做,那么主容器将被强制转换为列表。例如,

x = c(0.5, 0.8, 0.23, list(0.5, 0.2, 0.9), recursive=TRUE)

class(x)
# [1] list

我在这里的意图不是批评这种语言或它是如何被记录的;同样,我并不是说列表数据结构或它的行为有任何问题。我所追求的是纠正我对它们如何工作的理解,这样我就可以在我的代码中正确地使用它们。

以下是我想更好地理解的事情:

What are the rules which determine when a function call will return a list (e.g., strsplit expression recited above)? If I don't explicitly assign names to a list (e.g., list(10,20,30,40)) are the default names just sequential integers beginning with 1? (I assume, but I am far from certain that the answer is yes, otherwise we wouldn't be able to coerce this type of list to a vector w/ a call to unlist.) Why do these two different operators, [], and [[]], return the same result? x = list(1, 2, 3, 4) both expressions return "1": x[1] x[[1]] why do these two expressions not return the same result? x = list(1, 2, 3, 4) x2 = list(1:4)

请不要给我指R文档(?我已经仔细阅读了它,它并不能帮助我回答我刚才背诵的那种问题。

(最后,我最近学习并开始使用一个名为hash的R包(在CRAN上可用),它通过S4类实现了传统的映射类型行为;我当然可以推荐这套套餐。)

有人能举例说明二叉树和二叉搜索树的区别吗?