提升多索引 将索引转换为标记并在索引上循环
boost multi index convert index to tag and loop on indexes
我有一个模板类(CrMultiIndex(,它接收一个模板参数,一个 boost multi index(GlobalHash(的定义。我使用 c++14
我需要一种方法将索引转换为标签(n_to_tag(?并在 CrMultiIndex ctor 或 Init 函数中循环索引?我最初的目的是循环索引并在 init 处生成带有 typeid(T(.name(( 的标签名称字符串。所以我可以根据标签名称显示统计信息
我有模板类
template <typename KeysType, typename MultiIndexType>
class CrMultiIndex
{
std::vector<SrStatisticsByIndex> m_StatsByIndex;
public:
MultiIndexType *m_pMultiIndex=NULL;
CrMultiIndex()
{
m_pMultiIndex = new MultiIndexType(typename
MultiIndexType::ctor_args_list());
}
以下是提升多索引容器的定义:
typedef boost::multi_index::multi_index_container<
CrUsersKeys,
UsersKey_hash_indices/*,
bip::allocator<CrUsersKeys,bip::managed_shared_memory::segment_manager>*/
> GlobalHash;
代码处于 http://coliru.stacked-crooked.com/a/d97195a6e4bb7ad4
我在查找提升多索引标签到索引和索引数量时问了一个类似的问题
你可以使用这样的东西:
住在科里鲁
template<typename MultiIndexContainer,std::size_t N>
std::string static_tag_name()
{
const std::type_info& i=typeid(
typename boost::mpl::front<
typename boost::multi_index::nth_index<MultiIndexContainer,N>::
type::tag_list
>::type
);
return i.name();
}
template<typename MultiIndexContainer,std::size_t... I>
std::string tag_name(std::size_t n,std::index_sequence<I...>)
{
static std::array<std::string(*)(),sizeof...(I)> a=
{{static_tag_name<MultiIndexContainer,I>...}};
return a[n]();
}
template<typename MultiIndexContainer>
std::string tag_name(std::size_t n)
{
return tag_name<MultiIndexContainer>(
n,std::make_index_sequence<
boost::mpl::size<
typename MultiIndexContainer::index_type_list
>::value
>{}
);
}
相关文章:
- 并行用于C++17中数组索引范围内的循环
- 如何在for循环中包含两个索引值的测试条件
- 为什么我在循环提升时得到意外的索引::hana::元组
- 特征获取索引数组,其中向量中的值为真(不需要循环)
- 对于循环增量器不能用作字符串向量的索引
- 一个 2D 数组,并按行存储值.第一个循环用于行索引,第二个循环用于列索引
- 对于检查 >=0 终止条件时的循环索引类型
- 了解带索引修改的嵌套循环
- 循环 std::由索引设置
- 嵌套循环 OpenMP 并行化、私有索引还是公共索引?
- 在我的 for 循环中,如何将索引更改为字符串?
- gtest - 报告带有EXPECT_EQ的循环的索引变量
- 如何在 for 循环中解决潜在的 getline() 问题,数组的第一个索引没有显示?
- G 4.8.5带负数组索引的循环优化错误
- 提升多索引 将索引转换为标记并在索引上循环
- 将循环(以及其中的条件)替换为按索引直接访问
- C++ 犰狳 生成给定 vec 或矩阵的索引 uvec,而不循环它
- 尝试将文件读入结构数组,但 for 循环仅显示第一个索引,其余索引显示为零
- C++ 迭代器循环与索引循环
- 迭代循环与索引循环