BOOST 多索引

发布于 2024-12-16 14:26:04 字数 1207 浏览 2 评论 0原文

我正在尝试使用 Boost 的多索引容器进行快速查找,但我在查找时遇到了困难。我发现一些文档有点令人困惑。这就是我所拥有的:

struct reports_entry
{
  reports_entry(  const std::string& category,
               const std::string& reportName):
               cat_name_(category),
               report_name_(reportName)
  {}
  std::string cat_name_;
  std::string report_name_;
};

typedef multi_index_container<
 reports_entry, indexed_by<
   ordered_non_unique<member<reports_entry, std::string
    , &reports_entry::cat_name_> >
    , ordered_unique<member<reports_entry, std::string
   , &reports_entry::report_name_> >
  >
 > reports_set;

fnv.insert(reports_entry("report", "somekindofreport1.dat"));
fnv.insert(reports_entry("report", "somekindofreport3.dat"));
fnv.insert(reports_entry("report", "somekindofreport2.dat"));
fnv.insert(reports_entry("mysecondreport", "somekindofreport4.dat"));
fnv.insert(reports_entry("mysecondreport", "somekindofreport5.dat"));

所以现在,如果我尝试搜索所有的dumbmreport报告,我会发现错误:

Rname_view::iterator it = fdv.find("report");
std::cout << it->report_name_;

我这样做对吗?我是否需要一个循环来获取该类型的所有报告?或者我完全滥用了这个?

谢谢

I'm trying to use Boost's multi-index container for fast look up, but I'm having a hard time with the find. I find some of the documentation a little confusing. Here is what I have:

struct reports_entry
{
  reports_entry(  const std::string& category,
               const std::string& reportName):
               cat_name_(category),
               report_name_(reportName)
  {}
  std::string cat_name_;
  std::string report_name_;
};

typedef multi_index_container<
 reports_entry, indexed_by<
   ordered_non_unique<member<reports_entry, std::string
    , &reports_entry::cat_name_> >
    , ordered_unique<member<reports_entry, std::string
   , &reports_entry::report_name_> >
  >
 > reports_set;

fnv.insert(reports_entry("report", "somekindofreport1.dat"));
fnv.insert(reports_entry("report", "somekindofreport3.dat"));
fnv.insert(reports_entry("report", "somekindofreport2.dat"));
fnv.insert(reports_entry("mysecondreport", "somekindofreport4.dat"));
fnv.insert(reports_entry("mysecondreport", "somekindofreport5.dat"));

So now if I try to search for all the dumbmreport reports I seg fault:

Rname_view::iterator it = fdv.find("report");
std::cout << it->report_name_;

Am I doing this right? Do I need a loop to get all the reports of that type? Or am I totally misusing this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巡山小妖精 2024-12-23 14:26:04

我认为您正在使用按报告名称排序的索引来查找类别名称。

I think you're using an index sorted by report name to look for a category name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文