【发布时间】:2016-10-19 16:51:38
【问题描述】:
我已成功创建boost::multi_index 并插入了值。我对 multi_index 有两个散列索引。两者都是成员函数,但一个是唯一的,另一个是非唯一的。
我正在尝试找出使用散列值从容器中获取值的方法。我不明白我应该怎么做。我在网上搜索了一下,发现有很多人问过这个问题。但我不明白需要做什么。我在 C++11 中看到了一些解决方案,但我不使用 C++11,而且我不明白正在做什么。有人可以向我解释如何使用它吗?以下是我的代码,
#include "stdafx.h"
#include<multi_index_container.hpp>
#include<boost/multi_index/hashed_index.hpp>
#include<boost/multi_index/mem_fun.hpp>
#include<boost/multi_index/tag.hpp>
class RetClass
{
int a, b;
};
class StoreMe
{
RetClass ex;
std::string exStr;
int id;
public:
void setId(RetClass a)
{
ex = a;
};
virtual const RetClass& getId() const { return ex; }
virtual std::string getIdString() const { return exStr; }
int getUniqueId() const { return id; }
};
struct IndexByStringId{};
struct IndexByUniqueId{};
typedef boost::multi_index_container<
StoreMe,
boost::multi_index::indexed_by<
boost::multi_index::hashed_unique<
boost::multi_index::tag<IndexByStringId>,
boost::multi_index::const_mem_fun<StoreMe, std::string, &StoreMe::getIdString>
>,
boost::multi_index::hashed_non_unique<
boost::multi_index::tag<IndexByUniqueId>,
boost::multi_index::const_mem_fun<StoreMe, int, &StoreMe::getUniqueId>
>
>
> mi_storeMe;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
我希望能够,
- 获取非唯一 ID 映射到的值
- 获取唯一 ID 映射到的值(如果存在)
请告诉我完成这项工作的正确/最简单的方法。我也不使用 C++11。
【问题讨论】:
标签: c++ boost multi-index boost-multi-index