私はこの問題に取り組むためにさまざまな手法を試してきましたが、C++やプログラミング全般にまったく慣れていません。この問題は、私が読んでいる「Accelerated C ++」という本から来ています。これまでのところ、私は第3章だけなので、第3章で教えられたことだけで問題に取り組んでいます。プログラムを実行すると正常に実行されますが、1つの単語を入力するとすぐに、セグメンテーション違反が発生します。なぜそれが起こっているのか誰かが私に説明できますか?また、私のやり方がこれまでに知っている知識で非常に非効率的である場合、章の境界内で物事を行うためのより良い方法を示唆することは素晴らしいことです!
コードは次のとおりです。
#include <iostream>
#include <algorithm>
#include <ios>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;
int main()
{
//ask for the first sentence to be typed in.
cout << "Please enter some words: ";
vector<string> word_storage;
vector<int> word_count;
string x;
int y = 0;
//words inputed pushed into vector(word_storage) or incremented if they exist
while(cin >> x) {
for(int i = 0; i <= y; i++) {
if(x != word_storage[i]) {
word_storage.push_back(x);
word_count.push_back(1);
} else {
word_count[i] += 1;
}
}
y++;
}
cout << endl;
//get size of word_storage
typedef vector<double>::size_type vec_sz;
vec_sz size = word_storage.size();
//system prints how many of each word exist
for(int j = 0; j <= size; j++) {
cout << "There are: " << word_count[j]
<< " of the word " << word_storage[j];
}
cout << endl;
return 0;
}
PS私は目障りなコーディングについて高度に謝罪します。