首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在向量中循环得到正确的输出?

如何在向量中循环得到正确的输出?
EN

Stack Overflow用户
提问于 2019-04-28 03:01:27
回答 2查看 68关注 0票数 1

当循环遍历这个向量时,我没有得到正确的输出,我不知道为什么

代码语言:javascript
复制
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,我如何修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-28 03:07:12

在打印“一旦我七岁”之后,它将崩溃,因为单词大小为4,而您正在循环5个元素(从i=0到4,words4是未定义的行为)。只要把等号从条件中去掉,你就可以走了。

代码语言:javascript
复制
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;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-04-28 03:13:53

代码语言:javascript
复制
vector<string> words = {"once","i","was","seven"};

words[0] == "once"
words[1] == "i"
words[2] == "was"
words[3] == "seven"

<= words.size()让循环带您到

words[4] == <undefined behaviour>

因此,最大的索引是size()-1。您通常可以通过使用基于范围的for循环来避免口吻:

代码语言:javascript
复制
for(const auto& outer_word : words) {
    cout<< outer_word << endl;
    for(const auto& word : words) {
        cout << word << "\n";
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55886654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档