迭代器做自增输出问题
#include<iostream>
#include<list>
int main()
{
std::list<int> List;
int number;
while(std::cin >> number)
{
List.push_back(number);
}
std::cin.sync();
std::cin.clear();
for(std::list<int>::iterator dex = List.begin(); dex != List.end();)
{
std::cout << *(dex ++)<< " " << *dex << std::endl;
}
return 0;
}
#include<iostream>
#include<list>
int main()
{
std::list<int> List;
int number;
while(std::cin >> number)
{
List.push_back(number);
}
std::cin.sync();
std::cin.clear();
for(std::list<int>::iterator dex = List.begin(); dex != List.end();)
{
std::cout << *(++ dex)<< " " << *dex << std::endl;
}
return 0;
}
#include<iostream>
#include<list>
int main()
{
std::list<int> List;
int number;
while(std::cin >> number)
{
List.push_back(number);
}
std::cin.sync();
std::cin.clear();
for(std::list<int>::iterator dex = List.begin(); dex != List.end();)
{
std::cout << *dex << " " << *(dex ++) << std::endl;
}
return 0;
}
#include<iostream>
#include<list>
int main()
{
std::list<int> List;
int number;
while(std::cin >> number)
{
List.push_back(number);
}
std::cin.sync();
std::cin.clear();
for(std::list<int>::iterator dex = List.begin(); dex != List.end();)
{
std::cout << *dex << " " << *(++ dex) << std::endl;
}
return 0;
}
请问为什么这几种的输出会出现不同的问题?有的输出结果与预想的有差别假如我输入数据是(1,2,3,4,5,6,7,8,9),std::cout << *dex << " " << *(dex ++) << std::endl;这个输出怎么数据是(2 1) (3,2)。。。。还出现debug;std::cout << *dex << " " << *(++ dex) << std::endl; 这个输出结果是(2 2) (3 3)。。。也出现debug;std::cout << *(++ dex)<< " " << *dex << std::endl;这个输出结果是(2 1) (3 2)。。。出现debug;std::cout << *(dex ++)<< " " << *dex << std::endl;这个输出结果是(1 1)(2 2)。。。这个没有出现debug。。。请问出现这些情况是什么原因??我想每两个元素作为一行,又该怎么做??
[解决办法]
认真去看置顶帖
[解决办法]
undefined behavior
这类的输出
std::cout << *dex << " " << *(dex ++) << std::endl;
std::cout << *dex << " "; dex++;
std::cout << *dex << std::endl