このコードは、C ++(2003)の「データ構造と問題解決」という本からのものです。
void getInts( vector<int> & array )
{
int itemsRead = 0;
int inputVal;
cout << "Enter any number of integers: ";
while( cin >> inputVal )
{
if( itemsRead == array.size( ) )
array.resize( array.size( ) * 2 + 1 ) ;
array[ itemsRead++ ] = inputVal;
}
array.resize( itemsRead ) ;
}
int main()
{
vector<int> array;
getInts( array ) ;
for( int i = 0; i < array.size( ) ; i++ )
cout << array[ i ] << endl;
return 0;
}
コンソールに数字を入力してEnterキーを押すと、プログラムは何もしません。その後、EOFとしてCTRL + Zを入力すると、プログラムは入力した番号を表示します。ベクトルのサイズを変更し、その各部分にinputValueを指定しているので、CTRL + Zを入力する前にプログラムが生成するのと同じくらい、1つではなく多くの数値が表示されると思いますが、それは起こりません。結局、ベクトルのサイズは1のようです。これの理由は何ですか?
また、私の他の質問は、whileループを次のように使用する場合です。
while( cin >> inputVal )
Ctrl + Zを入力するまで、プログラムは機能しますか。または、0と入力しても同じことができますか?