Если это то, как вы ожидаете получить доступ к данным, а производительность важна, рассматривали ли вы возможность использования параллельных векторов?Вместо
std::vector<Small>
В «Большом» вы фактически поддерживаете 3 вектора
std::vector<int> aVec;
std::vector<int> bVec;
std::vector<int> cVec;
Все элементы в 0 соответствуют 0-му «Маленькому», и вы можете легко отделить всеThe as from bs.
Это очень раздражающая бухгалтерия, которую вы должны быть уверены в том, что все правильно и хорошо инкапсулированы.Это не более элегантное решение, мне обычно не нравятся такие вещи, и я, вероятно, задам вопрос в обзоре кода, но оно, вероятно, даст вам наилучшую производительность для описанных вами операций.