我一直在尝试不同的技术来解决这个问题,而且我对 C++ 或一般编程很陌生。这个问题来自我正在阅读的一本名为“Accelerated C++”的书,到目前为止我只在第 3 章,所以我试图只用第 3 章中所教的内容来解决这个问题。当我运行程序时,它运行良好,但是只要我输入一个单词,就会出现分段错误。谁能向我解释为什么会这样?此外,如果我的方法对我目前所知道的知识来说效率极低,那么在章节边界内暗示一种更好的做事方式会很棒!
这是代码:
#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我为眼睛疼痛的编码提前道歉。