读书人

迭代器做自增输出有关问题

发布时间: 2013-08-04 18:26:16 作者: rapoo

迭代器做自增输出问题
#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

读书人网 >C++

热点推荐