配列の宣言の仕方とsortとの表記の仕方によってエラーが起きます。以下にいくつかの例を挙げます。なぜうまくいいったり、いかなったりするのか分かる方がいたら教えていただきたいです。
c++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 int n; 6 cin >> n; 7 int a[n]; 8 for(int i=0;i<n;i++){ 9 cin >> a[i]; 10 } 11 sort(a.begin(),a.end()); 12........ 13} 14
この場合だと以下のエラーが出る。
c++
1./Main.cpp: In function ‘int main()’: 2./Main.cpp:11:10: error: request for member ‘begin’ in ‘a’, which is of non-class type ‘int [n]’ 3 11 | sort(a.begin(),a.end()); 4 | ^~~~~ 5./Main.cpp:11:20: error: request for member ‘end’ in ‘a’, which is of non-class type ‘int [n]’ 6 11 | sort(a.begin(),a.end()); 7 | ^~~
この場合、配列の宣言を
vector<int> a;
とすると、コンパイルに問題はないが実行時エラーが出る。
また、配列の宣言を
vector<int> a(n);
とするとうまくいく。
また、配列の宣言は最初のままで、sortを
sort(a,a+n);
とするとうまくいく。このsortの使い方も調べてもなかなか出てこなかったので、何を意味しているのか教えていただけたら幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/20 05:17