そのため、ファイル内の単語数を取得してバッグに挿入しようとしています。処理時間を改善するために、そのオブジェクトへの参照を取り、それを前のものに切り替える置換コマンドを作成しました。これにより、より一般的な単語がバッグ内でインクリメントされるのが速くなります。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