因此,我试图获取文件中的字数并将其插入包中。为了缩短处理时间,我创建了一个替换命令,该命令获取对该对象的引用并将其与之前的对象进行切换,以便更常见的单词可以更快地在包中增加。我不断收到 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 代码要点 https://gist.github.com/nohe427/ff1ce9bbeec78983aec3