【发布时间】:2012-09-27 14:43:16
【问题描述】:
在 C++ 中,如何根据三个键为结构聚合值?
在 Perl 中,我会使用哈希值(例如 $hash{$key1}{$key2}{$key3}{'call_duration'} += 25);
由于我是 C++ 的新手,您能否建议一种合适的方法?
我已经查看了关于 SO 在 C++ 中使用 std::map 讨论嵌套哈希等效项的主题,但是它指出这在性能方面很慢,并且由于我需要为电信运营商处理记录,因此性能至关重要.
我没有必要遵循使用模板库或任何在语法和思维方式上应该类似于 Perl 的方法,但是如果您不得不做类似的事情,您能否分享一个快速且合适的方法来实现它?
我主要受限于 C++ 98 标准(技术主管允许使用更新的功能,前提是它们得到编译器的支持并且具有关键优势)。
如果描述混乱,请见谅,提前致谢!
edit:编译器版本是 GCC 4.1.2,将 tr1/functional 作为库导入并不被它所反对。
edit:非常感谢所有加入的人,特别是 Bartek 和 Rost 忍受了我的愚蠢问题。我决定选择 Rost 的答案,因为这是我真正能够开始工作的! :)
【问题讨论】:
-
以三元组为键的地图听起来很合理。
-
你能澄清你想要做什么吗?这也有助于了解密钥的类型。 (如果要使用搜索引擎,请搜索“无序地图”。)
-
std::map<std::tuple<>, TValue>、std::map<TStructOfThreeKeys, TValue>或boost::multi_index -
你可以使用 TR1 库吗?
-
如果您正在寻找 C++ 中的哈希图,请查看此处:en.cppreference.com/w/cpp/container/unordered_map 如果您使用的是支持 C++11 的编译器。
标签: c++ hash aggregation