Я создал многоиндексный контейнер с 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, но я думаю, что нет, верно?