Guest:
Register
|
Login
|
Member List
|
Search
|
Statistics
|
FAQ
Language
----------
Simplifed Chinese
Traditional Chinese
English
CnPack Forum
»
CnVCL 组件包
» TCnStrToPtrHashMap 问题
‹‹ Last Thread
|
Next Thread ››
Poll
Trade
Reward
Activity
Printable Version
|
Email to Friend
|
Subscription
|
Favorites
Subject: TCnStrToPtrHashMap 问题
wuyou
新警察
UID 10433
Digest Posts 0
Credits 11
Posts 4
点点分 11
Reading Access 10
Registered 2007-4-12
Status Offline
#1
Post at 2010-3-26 22:44
Profile
|
Blog
|
P.M.
TCnStrToPtrHashMap 问题
var
count: integer;
map : TCnStrToPtrHashMap;
p : Pointer
begin
count := 3;
//如果分配得刚刚好,下面就出错
map := TCnStrToPtrHashMap.Create(count);
//而如果:多分配几个空间,下面就没有问题
map := TCnStrToPtrHashMap.Create(count+1);
map.Add('01', @map);
map.Add('02', @map);
map.Add('03', @map);
//下面返回是 False
Map.Find('01', p);
end;
zjy
管理员
UID 2
Digest Posts
6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
#2
Post at 2010-3-29 11:39
Profile
|
Site
|
Blog
|
P.M.
多谢报告!
经检查,这确实是一个Bug,已经修正:
http://code.google.com/p/cnpack/source/detail?r=469
建议您通过SVN更新到最新版本使用。
另外,HashMap 是一种空间换时间的算法,通常为 Hash 表分配的项目数应数倍于预期需要保存的项目数,否则会因为 Hash 值碰撞重定位带来性能的严重下降。
虽然 HashMap 在增加子项时会自动增长存储空间,但增长的效率较低,所以建议使用 HashMap 时如果能估算出列表项目数,可以在创建 HashMap 时取2-5倍或更多的项目数来初始化。
PS:在贴出的代码中,@map取的是map变量的地址(局部变量在堆栈上的地址),而不是map对象的地址,如果需求是保存对象的话,应该直接用 map 而不是 @map。
Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
wuyou
新警察
UID 10433
Digest Posts 0
Credits 11
Posts 4
点点分 11
Reading Access 10
Registered 2007-4-12
Status Offline
#3
Post at 2010-4-3 11:15
Profile
|
Blog
|
P.M.
谢谢!回复得不错,受教了
PS:在贴出的代码中,@map 只是一个例子,没有什么特别的意思
不过学是学到一招
Poll
Trade
Reward
Activity
CnPack Forum
CnPack English Forum
> CnWizards IDE Wizards
> CVSTracNT
> Announcements & Others
All times are GMT++8, the time now is 2024-11-23 05:14
Powered by
Discuz!
5.0.0
© 2001-2006
Comsenz Inc.
Processed in 0.009080 second(s), 9 queries , Gzip enabled
TOP
Clear Cookies
-
Contact Us
-
CnPack Website
-
Archiver
-
WAP
Member's CP Home
Edit Profile
Credits Transaction
Public User Groups
Buddy List
Main
Page Views
User Agents
Posts History
Top Forums
Top Threads
Post Ranking
Credit Ranking
Online Time
Team
Moderation Stats