c++初学者求助:c++vector 初始化出现问题

#include
#include
using namespace std;
int main()
{
vector v1;
vector v2;
cout<<"请输入v1的内容,整数"< int i=0,j=0;
while(cin>>i)
v1.push_back(i);
cout<<"请输入v2的内容,整数"< while(cin>>j)
v2.push_back(j);

    return 0;

}

程序只执行到cout<<"请输入v2的内容,整数"<<endl;
第二个while并没有执行,是为什么?

     vector<int> v1;
    vector<int> v2;
    cout<<"请输入v1的内容,整数"<<endl;
    int i=0,j=0;

    bool succeed = true;
    while(succeed)
    {
        succeed = cin>>i;
        cout << "succeed " << succeed << endl;
        v1.push_back(i);
    }

    cout<<"请输入v2的内容,整数"<<endl;
    bool succeed2 = cin>>j;
    cout << "succeed2 " << succeed2 << endl;
    while(cin>>j)
        v2.push_back(j);

强调两点:

  • 1 程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据;
  • 2 正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。代码修改成上面的样子后可以看出,一旦cin>>状态由good转为bad,则不管后面的判断状态cin>>j始终为false

运行截图:
Results

第一个while循环终止条件是什么,你知道吗? 说白了也就是while(cin >> i)这个循环你没有真正的去理解,如果你的i一直都是整形或者说是
编译器通过隐式转换成整形的情况,这样的话(也就是说没有非法输入的时候)这个循环是不会停止的...所以要看你的输入是否正确...

     vector<int> v1;
    vector<int> v2;
    cout<<"请输入v1的内容,整数"<<endl;
    int i=0,j=0;

    bool succeed = true;
    while(succeed)
    {
        succeed = cin>>i;
        cout << "succeed " << succeed << endl;
        v1.push_back(i);
    }

    cout<<"请输入v2的内容,整数"<<endl;
    bool succeed2 = cin>>j;
    cout << "succeed2 " << succeed2 << endl;
    while(cin>>j)
        v2.push_back(j);

强调两点:

  • 1 程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据;
  • 2 正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。代码修改成上面的样子后可以看出,一旦cin>>状态由good转为bad,则不管后面的判断状态cin>>j始终为false

运行截图:
Results

第一个while循环未退出,程序就不能往下执行了,可以通过i来结束C++循环语句

C++ 容器(一):顺序容器简介http://blog.csdn.net/yhl_leo/article/details/47759729

以前写的顺序容器简介,可以参考一下~