(求解答)对于不同输入方式得到的不同结果

#include<iostream>
#include<vector>
#include<list>
using namespace std;

int main()
{
	int ival;
	vector<int> ivec;
	list<int> ilist;	cout << "please input some integers for vector(ctrl+z to end)!!!" << endl;
	while(cin >> ival)
		ivec.push_back(ival);
	
	cin.clear();
	cin.ignore();
	cout << "please input some integers for  list(ctrl+z to end)!!!" << endl;
    while(cin >> ival)
		ilist.push_back(ival);
	/*
	vector<int>::iterator iter1;
		list<int>::iterator iter2;
		//for (vector<int>::iterator iter1 = ivec.begin(),list<int>::iterator iter2 = ilist.begin(); // 同一语句不能用逗号隔开定义两种不同类型的变量。
			for (iter1 = ivec.begin(),iter2 = ilist.begin();
				//iter1 != ivec.end(), iter2 != ilist.end();//逗号表示条件是一个或关系
				iter1 != ivec.end()&& iter2 != ilist.end();
				++iter1, ++iter2)
				if(*iter1 == *iter2)
					cout << "元素相同!!!" << endl;
						else 
							cout << "元素不相同!!!" << endl;
					return 0;
		*/
	vector<int>::iterator iter1 = ivec.begin();
	list<int>::iterator iter2 = ilist.begin();
	while(iter1 != ivec.end() && iter2 != ilist.end())
	{
		if(*iter1 != *iter2)
			break;
		++iter1;
		++iter2;
	}
	if(iter1 == ivec.end() && iter2 == ilist.end())
		cout << "The vector contains the same elements as the list." << endl;
	else 
		cout << "List and vector contain different elements." << endl;
	return 0;
}


当把cin.ignore() 注释掉后,注意以下不同输入得到的不同结果:


(求解答)对于不同输入方式得到的不同结果_第1张图片

问题一:上面的输入为什么不能得到正确的输出?


(求解答)对于不同输入方式得到的不同结果_第2张图片



当cin.ignore()没被注释掉的话,注意下面不同的输入输出:



(求解答)对于不同输入方式得到的不同结果_第3张图片


问题二:上面的输入为什么不能得到正确的输出?


(求解答)对于不同输入方式得到的不同结果_第4张图片

问题三:上面的一些输入中为什么会得到正确的输出?


你可能感兴趣的:((求解答)对于不同输入方式得到的不同结果)