如何为不习惯它的程序员提高multi_index_container的可读性?

问题描述 投票:0回答:1

我创建了一个具有3个非唯一,无序键的多索引容器,如下所示:

namespace bmi = boost::multi_index;
class SurveyRepository {
// some other code
    using SurveyCodeContainer = boost::multi_index_container<
        SurveyCode,
        bmi::indexed_by<
            bmi::hashed_non_unique<bmi::tag<Survey>, bmi::member<SurveyCode, unsigned, &SurveyCode::survey_id>>,
            bmi::hashed_non_unique<bmi::tag<Table>, bmi::member<SurveyCode, unsigned, &SurveyCode::table_id>>,
            bmi::hashed_non_unique<bmi::tag<Check>, bmi::member<SurveyCode, unsigned, &SurveyCode::check_id>>
        >
    >;

    SurveyCodeContainer m_SurveyCodeContainer;
};

关键是能够使用这些键中的任何一个来搜索SurveyCode对象,我认为它是完全可读的,而且是一种非常简洁的解决方案。

但是进行了代码审查,尽管过去在我们的代码库中已经使用了multi_index_container,但有些人对诸如以下的注释感到困惑:

难道没有那么丑陋的容器吗?

所以有一种方法可以使它不那么丑陋/更易读?我们使用的是Visual Studio 2019,我更喜欢stl的一些解决方案,而不是boost的解决方案,但我想没有解决方案,对吧?

stl containers c++17 visual-studio-2019 boost-multi-index
1个回答
1
投票

[如果您使用的是C ++ 17,则有slightly more convenient syntax可用:

namespace bmi = boost::multi_index;
class SurveyRepository {
// some other code
   using SurveyCodeContainer = boost::multi_index_container<
        SurveyCode,
        bmi::indexed_by<
            bmi::hashed_non_unique<bmi::tag<Survey>, bmi::key<&SurveyCode::survey_id>>,
            bmi::hashed_non_unique<bmi::tag<Table>, bmi::key<&SurveyCode::table_id>>,
            bmi::hashed_non_unique<bmi::tag<Check>, bmi::key<&SurveyCode::check_id>>
        >
    >;

    SurveyCodeContainer m_SurveyCodeContainer;
};
© www.soinside.com 2019 - 2024. All rights reserved.