Ну Привет ребятаСлишком много элементов вектора. Комбинации программы
Я делаю проект по статистике лото и в основном это имеет класс «kombinacije4», который имеет атрибуты, как первый NUM второго пит третьего пит четвёртой Num дата и время, когда он последний раз появился и сколько раз появилась комбинация.
class kombinacije4 {
public:
Date date;
Time time;
int first;
int second;
int third;
int fourth;
int howMuchRoundsDidntShowedUp;
int howMuchTimesAppeared;
void GetCombination(int, int, int, int);
void GetCombinationsAfterRound(int);
};
Тогда я вектор этих элементов
std::vector<kombinacije4> fourties;
инициализирует этот вектор довольно быстро и хорошо, но у меня есть проблема, когда я хочу, чтобы изменить эти атрибуты, как, когда он в последний раз появился дата и время или сколько он появился, потому что есть 80 номеров, и за один раунд они набирают 20 чисел. Из этих 20 чисел я должен сделать комбинации из 4 и найти их в fourties
и изменить их атрибуты. В течение семисот раз. Потому что 700 раундов. У кого-нибудь есть идея, как я могу напрямую получить доступ к их значениям. Может быть std::find
может что-то сделать? Очевидно, у меня есть проблема с временными ограничениями.
Любая идея делать эту программу с другой стороны?
for(auto i=round.begin();i!=round.end();i++){
for(auto j=i+1;j!=round.end();j++){
for(auto k=j+1;k!=round.end();k++){
for(auto l=k+1;l!=round.end();l++){
for(auto p=fourties.begin();p!=fourties.end();p++){
-if-statement
}
}
}
}
}
Obviously this block is going to pass 3 million times through the vector of million and half elements
СПАСИБО!
Несколько замечаний: 1) Что означает 'если-statement' делать? Если он не изменит размер раунда, то вместо 4 вложенных циклов «i, j, k, l' вы можете предварительно вычислить количество раз« if-statement »будет выполняться (это будет зависеть от round.size()) и имеют только один цикл. 2) Вриемэ не английское слово. Не смешивайте два языка при отправке вопросов на переполнение стека. – mercury0114
if-statement означает, что если в раунде есть комбинация, которая будет нарисована, он будет искать эту комбинацию через весь вектор из 1 580 512 комбинаций и ЕСЛИ НАЙДЕН (если оператор) изменит 'howMuchRoundsDidntShowedUp' и' howMuchTimesAppeared' в конечном итоге дату и время. Я просто забыл изменить это слово, но это всего лишь одно слово. С наилучшими пожеланиями –
Я не знаю точно, но я подозреваю, что 'for_each_combination' из этой библиотеки было бы полезно: https://github.com/HowardHinnant/combinations –