私は以下のコードを持っています。与えられたファイル内の与えられた文字の繰り返し数を数えることになっています。しかし、私はこれを実行しようとすると、範囲外のベクトルの下付き文字を取得します。同じエラーを持つ他の人は、未定義の部分にアクセスしようとしていましたが、これは問題ではないようです。範囲外のベクトル下付き文字 - 構造体のベクトル
struct letters
{
char letter;
int repetitions=0;
};
void howManyTimes(const string &output)
{
ifstream file(output);
vector <letters> alphabet;
for (int i = 0; i < 'z' - 'a' + 1; i++)
{
alphabet[i].letter = 'a' + i;
}
string line;
while (file.eof() == 0)
{
getline(file, line);
for (char c : line)
{
if(c >= 'a' && c <= 'z')
alphabet[c - 'a'].repetitions++;
else if (c >= 'A' && c >= 'Z')
alphabet[c - 'A'].repetitions++;
}
}
cout << alphabet[10].repetitions;
}
ベクトルで要素を埋めていますか? – UnholySheep
これを使用するには、ベクターを初期化する必要があります。そうでなければ、 'operator []'の代わりに 'push_back( 'a' + i)'を使って値を代入します。 –
一意のアイテムの出現数を検索するには、実際には 'std :: map'を使用する必要があります。 – NathanOliver