我正在嘗試將n整數輸入到向量中。以下是我用來這樣做的代碼。首先,我要求 n 的值,然后輸入所有這些n整數。
#include <bits/stdc .h>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> input(n);
for (int i = 0; i < n; i )
{
cin >> input[i];
}
return 0;
}
我不知道為什么程式在不接受任何輸入的情況下終止,我看不出這段代碼有任何缺陷,而且它似乎對其他人來說很好,但對我來說卻不是。
這是執行此程式后終端的樣子。

輸入示例:
5
5 3 1 5 2
當我嘗試在 windows 終端中編譯程式時,出現此錯誤


uj5u.com熱心網友回復:
當輸入流中有一些不可決議為數字的資料時,n設定為 0。
這可能是由于您的終端向輸入流發送換行符,或者根本沒有設定轉發終端輸入(如約翰提到的)。
從不同的終端運行它或添加一個解決方法,只接受大于 0 的數字:
int n = 0;
while (n == 0) {
cin >> n;
}
// ...
uj5u.com熱心網友回復:
問題更新后編輯:
錯誤截圖表明問題不是你的代碼,而是你機器上安裝的軟體。自加載標準庫后引發此錯誤,但未找到您使用的編譯器的函式特異性。
一種解釋是您安裝了多個編譯器,另一種是您將一些錯誤的 dll 復制到應用程式的目錄中。您也可能提供了一些奇怪的編譯器標志。
所以請檢查您的機器上安裝了什么以及您的應用程式的當前目錄中有什么(是否有一些 dll)?
命令列截圖(請不要這樣做)表明您正在以錯誤的方式構建專案。使用gcc不要將 C 標準庫鏈接到代碼中。您應該使用g 標準庫將隱式鏈接到您的程式。
奇怪的是您的程式無法構建(控制臺螢屏截圖)并且您以某種方式運行它導致運行時錯誤(錯誤訊息框影像)。
舊答案
仍然可以有效。
請提供輸入示例。
- 如果您提供了負值,則可以拋出例外,終止程式而沒有任何輸出。
- 其他說明您輸入了無效值并
std::cin處于錯誤狀態。在這種情況下std::cin,在處理錯誤之前不做任何事情。
這是正確輸入、負大小或無效的無數值的演示。
uj5u.com熱心網友回復:
您在宣告和分配值時是錯誤的。請記住,您使用的是 avector而不是array任何型別的 an。
根據您的設定,正確的語法是:
#include <bits/stdc .h>
using namespace std;
int main() {
int numbers;
vector<int> input;
cout<<"How many numbers? ";
cin>>numbers;
int temp; /* temporary value used in vet.push_back() */
for (int i = 0; i < numbers; i ) {
cout<<"Vector input: ";
cin>>temp;
input.push_back(temp);
}
cout<<"Size of vector: "<<input.size()<<"\n";
// for output
for (int i = 0; i < input.size(); i )
cout<<input[i]<<" ";
return 0;
}
實際上,向量是動態的。你不需要給它一個預定義的維度。它以默認大小宣告,每次達到最大大小時,它都會加倍。它使用起來很舒服,但由于它需要碎片和未使用的區域,因此效率不高。
在像您這樣的程式上,但是您可以使用動態陣列。
最后一件事,如果您使用向量,請考慮#include <vector>庫
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491063.html
