0

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

4

0 回答 0