首页 > 解决方案 > 循环遍历向量时如何获得正确的输出?

问题描述

循环通过此向量时,我没有得到正确的输出,我不知道为什么

vector<string> words = {"once","i","was","seven"};
for(int i=0;i<=words.size();i++){
    cout<<words[i]<<endl;
    for(int j =0; j<=words.size();j++){
        cout<<words[j]<<endl;
    }
}

这段代码应该打印:once once i was seven i once i was seven was once i was seven seven once i was seven,但它打印:once once i was seven,我该如何修复它

标签: c++

解决方案


在打印“一旦我七岁”之后,它会崩溃,因为单词大小为 4,并且您正在循环 5 个元素(从 i = 0 到 4 并且 words[4] 将是未定义的行为)。只需从条件中删除等号即可。

vector<string> words = {"once","i","was","seven"};
for(int i = 0; i < words.size(); i++){
    cout << words[i] << endl;
    for(int j = 0; j < words.size(); j++){
        cout << words[j] << endl;
    }
}

推荐阅读