繁体   English   中英

C ++使用迭代器时前两个元素无法正确打印

[英]C++ First two elements not printing properly when using iterator

我一直在寻找,并在这里找到了一些东西: 变量不在迭代中打印,但是我不确定是否一定适用。

我正在做的是,当我这样调用程序时,程序可以正确打印所有值:

for (int i = 0; i < SampleVec.Matchups().size(); ++i){
    std::cout << SampleVec.Matchups()[i] << std::endl;
}

或当我这样称呼它时:

std::vector<int> temp;
temp = SampleVec.Matchups();
for (std::vector<int>::const_iterator iter = temp.begin(); iter != temp.end(); iter++){
    std::cout << *iter << std::endl;
}

但是当我这样写的时候

for (std::vector<int>::const_iterator iter = SampleVec.Matchups().begin(); iter != SampleVec.Matchups().end(); iter++){
    std::cout << *iter << std::endl;
}

前两个值显示为0,其余值正确打印。 在我发布的链接中,他们谈论从输入中删除换行符,但是我不知道这是否适用于此甚至如何执行。 如果需要运行并查看实际功能,我可以发布完整的代码。

for (std::vector<int>::const_iterator iter = SampleVec.Matchups().begin(); iter != SampleVec.Matchups().end(); iter++){
    std::cout << *iter << std::endl;
}

begin()返回Matchups()返回的临时std::vector开头的迭代器。 在使用iter的时刻,它是一个悬空的迭代器,因为临时文件已被破坏,因此您具有未定义的行为。

您必须先存储结果,然后才能像示例2中一样尝试通过迭代器对其进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM