Я пытаюсь сравнить 2-мерный вектор с другим 2-мерным вектором.
vector<vector<int> >::iterator rowit1;
for(rowit1 = aboveaveperms.begin(); rowit1 != aboveaveperms.end();rowit1++)
{
vector<vector<int> >::iterator row2it;
int s = 0;
for(row2it = afterave.begin(); row2it != afterave.end();row2it++)
{
vector<int> matches (9);
vector<int>::iterator itset;
itset = set_intersection(rowit1->begin(),rowit1->end(),row2it->begin() + 1,row2it->end(),matches.begin());
matches.resize(itset-matches.begin());
s = matches.size();
matches.erase(matches.begin(),matches.end()); // my attempt at trying to correct it
}
}
Во втором цикле на первом проходе совпадения создаются правильно, держа 9 нулей.Но как только он начинает второй цикл, как только он попадает в фигурную скобку, он получает 101 миллион вместо 9. Как только он действительно достигает своего объявления, он возвращается к 9, что является правильным.Во время отладки я заметил, что в нем содержатся все 2-мерные векторы, с которыми я проверяю, до того как объявление исправит его до значения только 9 дюймов.
idzireit
APPENDUM:
Как уже было сказано, я забыл задать свой вопрос.Приведенный выше код работает так, как я хочу, чтобы количество совпадений (между 5 и 9) было, но из-за нестабильного поведения вектора это вызовет утечку памяти или sigseg, если другие векторы станут слишком большими?Кроме того, как сказал whozcraig, у меня есть row2it-> begin () + 1, потому что первый элемент - это номер игры, который намного больше остальных чисел.Остальные номера отсортированы, хотя.Пример того, что я пытаюсь сделать, выглядит следующим образом:
Пермский вектор 1
1 3 5 6 7
сравнение с 4 векторами и подсчет количества совпадений в каждом
5 8 9 10 11
3 7 11 14 18
1 5 6 7 8
, поэтому при выполнении цикла первый матч должен быть1 секунда должна быть 2, а третья должна быть 4. Надеюсь, что это поможет уточнить, что я пытаюсь сделать.
ADDENDUM 2:
Теперь, когда у меня запущен и работает мой обмоточный станокпереустановил QT Creator на нем Я запустил приведенный выше код и отлично работает на Windows.Я не получаю 101 миллион элементов, как при работе под Ubuntu.Почему он работает правильно на windoze, а не на Ubuntu?
idzireit