【问题标题】:Alternatives for boost::multi_indexboost::multi_index 的替代方案
【发布时间】:2016-09-20 11:13:30
【问题描述】:

我想使用可以创建字典之类的东西,

多键

Key1                     which will map to              SomeObject
Key2
Key3
Key4
etc

我想根据任何键进行查找。我对 boost::multi_index 有奇怪的问题,正在寻找替代方案。

我的编译器是 Visual Studio 2005,我使用 boost 而不要使用 C++11。任何提升(除了 multi_index)的东西都是最受欢迎的。

【问题讨论】:

  • 如果您能解释一下boost::multi_index 遇到的“奇怪问题”,我们可以帮助您解决这些问题吗?
  • 我和 Joachim 在一起。
  • 为什么有人会否决我的问题?!我有一个问题,并要求替代!为什么我会被否决?
  • 我没有投反对票。但是,您没有解释您的奇怪问题。而且要求图书馆是题外话。

标签: c++ visual-c++ boost multi-index boost-multi-index


【解决方案1】:

当然你应该解决你奇怪的问题,但这里有一个很好用的技术:

std::vector<X> v; // elements of X in some order
std::vector<std::reference_wrapper<X const> > index1(v.begin(), v.end());
std::vector<std::reference_wrapper<X const> > index2(v.begin(), v.end());

// sort the indexes
std::sort(index1.begin(), index1.end(), by_property1);
std::sort(index2.begin(), index2.end(), by_property2);

当然,在突变下保持同步并控制对索引进行排序的运行时成本会变得更加棘手,这就是为什么 - 大多数时候 - 你会想要multi_index_container

另外,请注意,为了更加无忧无虑,您需要将 vector 替换为 list 以享受迭代器/引用的稳定性。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2012-02-10
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多