[英]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.