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

容器比较,求教。解决方案

2012-03-29 
容器比较,求教。。C/C++ code#include iostream#include string#include vector#include list#inclu

容器比较,求教。。

C/C++ code
#include <iostream>#include <string>#include <vector>#include <list>#include <deque>using namespace std;void main(){    vector<int> vec1;    list<int> ls1;    list<int> ls2;    int a = 0;    cout << "Input number for vec1!" <<endl;    while(cin >> a)        vec1.push_back(a);    cout << "Input number for list" << endl;    int b = 0;    while(cin >> b)        ls1.push_back(b);    for(vector<int>::const_iterator it = vec1.begin();it != vec1.end(); ++it)        ls2.push_back(*it);    if(ls1 == ls2) cout << "They are the same !" << endl;    else cout << "They are different!"<<endl;}

题目要求是 比较vec1 和 ls1中的元素 是否相同。

这里无法输入 ls1。。是不是缓冲区的原因, 该怎么改呢?

[解决办法]
while(cin >> a)
vec1.push_back(a);
cout << "Input number for list" << endl;
cin.clear();
cin.sync();
int b = 0;
while(cin >> b)

[解决办法]
while(cin >> a)
vec1.push_back(a);
当这个输入结束后,输入流cin就处于了无效状态,
while(cin >> b)
ls1.push_back(b);
当再次进行输入时,由于输入流cin是处于无效状态,所以无法输入,这时需要清理输入流cin的状态和缓冲区里的数据,cin.clear()这是清理输入流cin的状态,使其状态处于有效,cin.sync(),是清空缓冲区
[解决办法]
不知道你是以什么结束了第一个输入循环,如果你用ctrl+z方式结束了第一个输入循环,就不需要清空缓冲区,也不需要cin.sync(),如果不是以ctrl+z方式结束了第一个输入循环,就需要清空缓冲区。
我用的也是VS2008,并且以ctrl+z结束了第一个循环输入,然后调用cin.clear(),不用调用cin.sync()就可以正确进行第二次循环输入

热点排行