我面臨一個錯誤:
請求 arr 中非型別別的成員大小
我無法弄清楚發生了什么。
#include <iostream>
#include <vector>
using namespace std;
// reversing an array;`
int main(){
int n, a;
std::vector<int> vect;
cout << "enter size: ";
cin >> n;
int arr[n];
cout << "enter numbers in array ---> " << endl;
for(int i=0; i<n; i ){
cin >> arr[i];
}
//logic to reverse
for(int j=arr.size()-1; j>=0; j--){
a = arr[j];
vect.push_back(a);
}
for(int k=0; k<n; k ){
cout << vect[k];
}
}
uj5u.com熱心網友回復:
我不認為陣列型別具有您可以使用向量而不是 arr(vector arr(n,0)) 的函式大小
uj5u.com熱心網友回復:
內置陣列沒有 .size() 成員函式。如果您愿意,則需要在陣列頭檔案中使用該陣列。但相反,您可以使用for(int j=n-1; j>=0; j--){.
這是您的解決方案:
#include<iostream>
#include <vector>
using namespace std;
// reversing an array;`
int main(){
int n, a;
std::vector<int> vect;
cout << "enter size: ";
cin >> n;
int arr[n];
cout << "enter numbers in array ---> " << endl;
for(int i=0; i<n; i ){
cin >> arr[i];
}
//logic to reverse
for(int j=n-1; j>=0; j--){
a = arr[j];
vect.push_back(a);
}
for(int k=0; k<n; k ){
cout << vect[k];
}
}
uj5u.com熱心網友回復:
對于初學者來說,可變長度陣列不是標準的 C 特性。并且在您的代碼中宣告了一個可變長度陣列:
cout << "enter size: ";
cin >> n;
int arr[n];
其次,陣列不是類。它們沒有成員函式。所以運算式arr.size()不正確。
如果編譯器支持std::size()在頭檔案<iterator>中為可變長度陣列宣告的函式,則可以使用運算式std::size(arr)而不是arr.size().
但是,您可以只寫而不是for回圈:
#include <iterator>
//...
vect.assign( std::rbegin( arr ), std::rend( arr ) );
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443100.html
上一篇:使用boostasio的多執行緒http處理是否需要鏈?
下一篇:獲取系統指標(SM_CYSCREEN);|給出錯誤的值|但是GetSystemMetrics(SM_CXSCREEN);給出正確的值
