c++ - BOOST 多重指数

标签 c++ boost containers boost-multi-index

我正在尝试使用 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"));

所以现在,如果我尝试搜索所有 dummmreport 报告,我会出现错误:

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

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

谢谢

最佳答案

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

关于c++ - BOOST 多重指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137369/

相关文章:

ubuntu - 系统错误: exec format error when I start a docker container

kubernetes - kubernetes 中每个部署可以配置多少个 pod?

docker - 如何清理 Linux 机器上的 docker 容器和镜像

c++ - SDL 窗口不显示

c++ - 在 Boost 中的 GCC 3.3 问题下使用 operator() 进行编译

c++ - 如何解决重复符号错误?

c++ - boost::asio 如何从客户端异步读取数据并定期写入数据(如果有)

c++ - 从并发析构函数停止 boost::asio::io_service::run()

c++ - 正确使用枚举 C++

c++ - GCC 和 ld 找不到导出的符号......但它们在那里