高分求 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了。就这么一句,一句正确的废话。
正常情况下,这个类应该这样用:
#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的类吧。
倒是希望哪个测试一下,对比一下内存占用及速度。
[解决办法]
又向妖哥学到不少
[解决办法]