【发布时间】:2015-12-08 23:30:24
【问题描述】:
Perl 有一个名为 “有序哈希” Tie::IxHash 的结构。可以将其用作哈希表/地图。条目按插入顺序排列。
想知道C++中是否有这样的东西。
这是一个示例 Perl sn-p:
use Tie::IxHash;
tie %food_color, "Tie::IxHash";
$food_color{Banana} = "Yellow";
$food_color{Apple} = "Green";
$food_color{Lemon} = "Yellow";
print "In insertion order, the foods are:\n";
foreach $food (keys %food_color) {
print " $food\n"; #will print the entries in order
}
更新 1
正如@kerrek-sb 指出的那样,可以使用 Boost 多索引容器库。只是想知道是否可以使用 STL 来做到这一点。
【问题讨论】:
-
听起来像是 Boost.Multiindex 的工作。
-
谢谢。很高兴知道。想知道它是否可以在纯 C++11 中使用。
-
这是什么意思?它是一个 C++ 库,因此您可以将它与 C++ 一起使用。
-
@KerrekSB 这应该意味着没有 Boost.Multiindex 依赖。在某些环境中,引入外部依赖项并不容易,然后必须对其进行更新和跟踪。
-
评论更新:不是直接用一个容器。但是通过矢量和地图(或 unordered_map)的组合,您可以相对轻松地获得相同的结果。