高分求 BCB中的字典类有那几个?
我用这个Generics_collections::TDictionary__2编译时出错
#include <Generics.collections.hpp>
Generics_collections::TDictionary__2<String,String> dir;
直接是他的文件出错!
大家知道有好的最好有例子
[解决办法]
BCB中有map可以通过key查找对象。
[解决办法]
Generics.collections大概是2010中新增的特性,在Delphi中使用TDictionary一切正常,但是生成的Generics.collections.hpp头文件中,TDictionary变成了TDictionary__2并导致链接时找不到TDictionary__2类的实现部分。怀疑这个TDictionary类是EMB的工程师专门给Delphi写的。在C++Builder中使用真的是太痛苦了。 查阅EMB的官方文档,一如既往的恶心。我以前就说过Borland/CodeGear/Embarcadero的通病:帮助文档简单并且没有参考价值。怎么说呢,打个比方,有个组件A的属性B,我们不清楚是做什么用的,查一下帮助吧,帮助里说:
B是A的一个属性。
OK了。就这么一句,一句正确的废话。
正常情况下,这个类应该这样用:
- C/C++ code
#include <Generics.collections.hpp>void __fastcall TForm1::Button1Click(TObject *Sender){ TDictionary__2 <String, String> *pDir = new TDictionary__2 <String, String>(0); // 添加键和值 pDir->Add("aaa", "111"); pDir->Add("bbb", "222"); pDir->Add("ccc", "333"); pDir->Add("ddd", "444"); // 判断是否存在某个键 bool b1 = pDir->ContainsKey("aaa"); ShowMessage(String().sprintf(TEXT("字典中%s存在键aaa"), b1? TEXT(""): TEXT("不"))); // 判断是否存在某个值 bool b2 = pDir->ContainsValue("111"); ShowMessage(String().sprintf(TEXT("字典中%s存在值111"), b2? TEXT(""): TEXT("不"))); // 尝试获取某个值 String str; bool b3 = pDir->TryGetValue("ccc", str); ShowMessage(String().sprintf(TEXT("%s"), b3? str.c_str(): TEXT("获取值失败"))); delete pDir;}
[解决办法]
补充一下,如果是一个字符串匹配一个整形值的字典,可以用TStringHash类,很方便。
[解决办法]
不知道这个 Generics.collections::TDictionary 的功效。
但使用C++的 hash_map 应该也不差。不是非要使用delphi的类吧。
倒是希望哪个测试一下,对比一下内存占用及速度。
[解决办法]
又向妖哥学到不少
[解决办法]
[解决办法]
不知道什么时候才能稳定。
[解决办法]
hash_map基于hash table(哈希表)
用hash_map吧
哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。
[解决办法]
[解决办法]
http://www.google.com.hk/search?hl=zh-CN&safe=strict&q=%E5%93%88%E5%B8%8C%E8%A1%A8%E6%9C%80%E5%A4%A7%E7%9A%84%E4%BC%98%E7%82%B9&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=&gs_rfai=