比较输入C+;中不同单词出现的次数+; 我尝试了不同的技术来解决这个问题,我对C++或编程一般都是新的。这个问题来自于我正在读的一本书《加速C++》,到目前为止,我只在第三章,所以我试图用第三章中所教的内容来解决这个问题。当我运行这个程序时,它运行得很好,但只要我输入一个单词,就会出现切分错误。谁能向我解释一下为什么会这样?此外,如果我的方法是非常低效的知识,我知道迄今为止,暗示朝着更好的方式做的事情在章节的界限将是伟大的

比较输入C+;中不同单词出现的次数+; 我尝试了不同的技术来解决这个问题,我对C++或编程一般都是新的。这个问题来自于我正在读的一本书《加速C++》,到目前为止,我只在第三章,所以我试图用第三章中所教的内容来解决这个问题。当我运行这个程序时,它运行得很好,但只要我输入一个单词,就会出现切分错误。谁能向我解释一下为什么会这样?此外,如果我的方法是非常低效的知识,我知道迄今为止,暗示朝着更好的方式做的事情在章节的界限将是伟大的,c++,segmentation-fault,C++,Segmentation Fault,代码如下: #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main() { //要求输入第一句话。 cout>x){ for(int i=0;ifor(int i=0;i向量包含它们自己的大小。我相信您可能有两个bug。首先,您需要x){ 对于(int i=0;i

代码如下:

#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
//要求输入第一句话。
cout>x){

for(int i=0;i
for(int i=0;i向量包含它们自己的大小。我相信您可能有两个bug。首先,您需要x){
对于(int i=0;i

还有一些其他的改进可以做,其中至少一个是使用一个结构来将存储和计数绑定到同一个向量,并使用迭代器。考虑到当你到达这些章节时,

如果你使用GCC,你可以链接到符号,然后运行程序通过<代码> GDB 。是的,你可以检查调用堆栈。我可以看到你试图计算一个单词连续出现的次数,而不是不同的次数。
for(int i = 0; i <= y; i++) {
        if(x != word_storage[i]) {
while(cin >> x) {
    for(int i = 0; i < word_storage.size(); i++) {
        if(x != word_storage[i]) {
            word_storage.push_back(x);
            word_count.push_back(1);
        } else {
            word_count[i] += 1;
        }
    }
}