(求解答)對於不同輸入方式得到的不同結果

#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() 註釋掉後,注意以下不同輸入得到的不同結果:



問題一:上面的輸入爲什麼不能得到正確的輸出?





當cin.ignore()沒被註釋掉的話,注意下面不同的輸入輸出:





問題二:上面的輸入爲什麼不能得到正確的輸出?



問題三:上面的一些輸入中爲什麼會得到正確的輸出?


發佈了29 篇原創文章 · 獲贊 10 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章