首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-08-04 
迭代器做自增输出问题#includeiostream#includelistint main(){std::listintListint numberwhile(

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

热点排行