【问题标题】:Change Default Integer Value Of C++ Dictionary TryGetValue() Method?更改 C++ 字典 TryGetValue() 方法的默认整数值?
【发布时间】:2011-10-15 12:57:10
【问题描述】:

我担心的快速问题有一个简短而令人失望的答案,但无论如何我还是会问.. 在 C++ 字典方法 TryGetValue() 中,当键不存在时,是否有任何方法可以更改将为整数返回的默认值(例如改为 -1)?问题是 0 是默认值,这不合适,因为值 0 在我的程序上下文中是有意义的。

如果不是,那么 ContainsKey() 方法会慢得多吗?或者它是分裂的头发,没有什么可担心的,因为我很可能别无选择..

非常感谢

PS 我不需要执行任何散列函数(尽管这可能在 Dictionary 的实现中!),我的集合也没有任何特定的顺序,我只想尽可能快地查找和添加。字典是一个合理的选择吗?

【问题讨论】:

  • 您是指托管 C++ 吗?它与 C++ 不一样,应该这样标记。
  • 我正在使用 Dictionary^ dictionary = gcnew Dictionary();语法......虽然用整数而不是字符串
  • C++ 中没有名为gcnew 的运算符。您正在使用Managed C++, or C++/CLI,因为它现在已知
  • 哦,我明白了。事实上,我一般几乎不使用 C++。对于混淆,我深表歉意。
  • 您肯定在使用托管代码:hint1 - 在此页面上,它清楚地表明该函数位于 .Net Framework 4.0 和 hint2 中...您正在使用 gcnew,它正在创建一个新的垃圾收集对象.. 这意味着它是托管的

标签: dictionary managed-c++ trygetvalue


【解决方案1】:

为什么不创建一个继承自Dictionary(Of TKey, TValue) 的类并覆盖TryGetValue 函数。然后你可以使用你自己的类,它的行为就像你想要的那样......

【讨论】:

  • 那是真的,也许我会诉诸于此。 MS 不允许您设置默认值似乎是一种疏忽。感谢您的帮助。
  • 我刚刚意识到该方法返回的 bool 表示该值是否存在。抱歉之前没有注意到,昨天是漫长的一天,我责怪疲劳!再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2011-06-29
  • 2023-03-10
  • 2022-01-01
相关资源
最近更新 更多