이 코드는 책의 데이터 구조와 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;
}
내가 콘솔과 언론 숫자 입력 입력
, 프로그램은 아무것도하지 않는다. 그 후에 CTRL + Z를 EOF로 입력하면 입력 한 번호가 프로그램에 표시됩니다. 벡터의 크기를 조정하고 각 부분에 inputValue를 제공하기 때문에 CTRL + Z를 입력하기 전에 프로그램이 생성하는만큼 하나가 아닌 여러 개의 숫자가 표시 될 것으로 예상되지만 그럴 수는 없습니다. 결국 벡터의 크기는 1 인 것처럼 보입니다. 이것에 대한 이유는 무엇입니까? 내가while(cin >> inputVal)
으로 while 루프를 사용할 때
또한 내 다른 질문입니다 윌 내가 CTRL + Z를 입력 할 때까지 프로그램 작동합니다. 또는 0을 입력해도 똑같이 할 수 있습니까?
'resize' 논리를 제거하고'push_back'을 사용하십시오 ... – ildjarn
"cin >> inputVal"의 반환 값은 cin입니다. 오류/실패 상태 인 경우 테스트가 실패합니다. 따라서 숫자가 아닌 (예 : 'q') 무언가를 입력하면 루프가 깨질 수 있습니다. – wreckgar23
"*이 코드는 책에서 가져온 것입니다. *". 다행히도 "어떻게 ** ** 데이터를 벡터에 저장하지 않습니까?" –