是否有可能在O(1)辅助空间中迭代二叉树(没有使用堆栈,队列等),或者这被证明是不可能的?如果有可能,怎么办呢?
编辑:如果有关于父节点的指针很有趣并且我不知道这可以做到,那么我得到的关于这可能的响应是可能的,但是根据你如何看待它,可以是O(n)辅助空间.此外,在我的实际用例中,没有指向父节点的指针.从现在开始,请在回答时假设这一点.
language-agnostic algorithm tree binary-tree memory-management
我有一个UITableView的实例,以及一个遵循委托和数据源协议的独立类.我这样做是这样的:
SubjectTableViewHandler *handler = [[[SubjectTableViewHandler alloc] init] retain];
tv.delegate = handler;
tv.dataSource = handler;
[handler autorelease];
Run Code Online (Sandbox Code Playgroud)
我不想将处理程序维护为ivar,如果我retain在结束时取消呼叫,当autorelease发生时,它会被发送release,然后被添加到池中,这会导致EXC_BAD_ACCESS.所以目前,保留计数是:
(1) At init: 1
(2) At retain: 2
(3) delegate/datasource properties are 'assign', still 2
(4) At autorelease: 1, now in autorelease pool.
Run Code Online (Sandbox Code Playgroud)
但是,由于属性是'assign',它们永远不会被释放,保留计数永远不会达到0,并且处理程序永远不会被解除分配.有没有更有效的方法来实现这一点,而不是将处理程序维护为ivar并在dealloc方法中释放它?
我遇到过一个Silverlight项目,它需要使用普通的Classlibrary来完成某些功能.由于您无法直接引用Classlibrary,因此该项目将Silverlight库链接到文件.
想知道如何做到这一点,你可以在下面的截图中看到我所指的是什么.
alt text http://img9.imageshack.us/img9/9840/referenceshortcut.jpg
如何使用类引用创建对象的实例,并确保执行构造函数?
在此代码示例中,将不会调用TMyClass的构造函数:
type
TMyClass = class(TObject)
MyStrings: TStrings;
constructor Create; virtual;
end;
constructor TMyClass.Create;
begin
MyStrings := TStringList.Create;
end;
procedure Test;
var
Clazz: TClass;
Instance: TObject;
begin
Clazz := TMyClass;
Instance := Clazz.Create;
end;
Run Code Online (Sandbox Code Playgroud) 当您查看http://www.campaignmonitor.com/css/时,您了解到需要在HTML中嵌入内联样式,以便在任何邮件客户端中读取您的电子邮件.
您是否知道任何工具或脚本可以自动将声明的HTML文件转换为仅包含内联CCS样式属性的HTML文件?
编辑:任何Javascript解决方案(即:http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/)?用jQuery?
Windows提供了一个无锁的单链表,如本页所述: Win32 SList
我想知道这个功能是否存在一个好的C++包装器.当我说好的时候,我的意思是它尽可能地导出通常的STL接口,支持迭代器等.我宁愿使用别人的实现而不是坐下来编写STL类型的容器.
我需要通过提供多种实现来使模块中的一个函数独立于平台,而不更改导入它的任何文件。以下作品:
do_it = getattr(__import__(__name__), "do_on_" + sys.platform)
...但是如果将模块放入包中则会中断。
另一种选择是使用 if/elif 来硬编码调用 do_it() 中的其他函数。
还有更好的吗?
我有很多目录充满了一堆TeX文档.因此,有很多文件具有相同的基本文件名和不同的扩展名.但是,其中只有一个是可编辑的.我想要一种方法来说服Emacs,如果我在一个我所拥有的目录中
document.tex
document.log
document.pdf
document.bbl
document.aux
...
Run Code Online (Sandbox Code Playgroud)
而且我在迷你游戏中并且做到了
~/Documents/.../doc<TAB>
Run Code Online (Sandbox Code Playgroud)
它填写'document.tex',因为那是该目录中唯一真正可编辑的文档.有人知道这样做的好方法吗?
我对此有两种矛盾的看法.一些消息来源说减少方法调用的方法应该少一些,但是其他一些消息来源说,编写更短的方法对于让JIT进行优化是有好处的.
那么,哪一方是正确的?
.net ×1
algorithm ×1
autorelease ×1
binary-tree ×1
c# ×1
c++ ×1
class ×1
constructor ×1
css ×1
delphi ×1
delphi-2009 ×1
emacs ×1
email ×1
gpl ×1
html ×1
html-email ×1
inline ×1
iphone ×1
linked-list ×1
lock-free ×1
methods ×1
objective-c ×1
properties ×1
python ×1
reference ×1
silverlight ×1
tree ×1
upx ×1
windows ×1