Получение ошибки EXC_BAD_ACCESS при попытке отсортировать сумку

Поэтому я пытаюсь получить количество слов в файле и вставить его в сумку. Чтобы сократить время обработки, я создал команду замены, которая берет ссылку на этот объект и заменяет его на предыдущую, чтобы более распространенные слова быстрее увеличивались в сумке. Я постоянно получаю EXC_BAD_ACCESS Code 2 ошибки, но не знаю, как они создаются. Ниже приведены блоки кода, о которых идет речь.

template<typename T>
void replace(T& item, T& item2)
{
T value = item;
T value2 = item2;
item = value2;
item2 = value;
}

а также

template<typename T, int N>
void Bag<T,N>::add(T item)
{
for (int i = 0; i < m_size; i++)
{
if (m_items[i] == item)
{
m_counts[i]++;
while (i != 0 && m_counts[i] > m_counts[i-1]) {
replace(m_items[i], m_items[i-1]);
replace(m_counts[i], m_counts[i-1]);
i--;
}
return;
}
}
m_items [m_size] = item;
m_counts[m_size] = 1;

m_size++;
}

Я читал, что это может быть бесконечный цикл, вызывающий это, но созданный цикл while не должен создавать бесконечный цикл. Любая помощь приветствуется. Если необходимо опубликовать весь код, его можно найти по адресу:

Github Gist кода
https://gist.github.com/nohe427/ff1ce9bbeec78983aec3

0

Решение

Задача ещё не решена.

Другие решения