私はC++を学ぶコースを取っており、このコースの一環として、インストラクターのビデオで動作するサンプルコードが提供されています。しかし、プログラムの一部が私に問題を起こしています。Visual Studio/C++:反復子はコンパイルされますが、実行時にエラーがスローされます
SOを検索すると、私は逆の反復子を使うことができます。しかし、私は、以下のコードがVS C++でランタイムエラーを発生させる理由を説明することができると考えていましたが、Linuxでは(g ++では)そうではありませんでした。
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char ** argv) {
vector<int> vi1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
vector<int>::iterator it; // vector iterator
// bidirectional iterator -- iterate forward or backward
// allows it--
cout << "bidirectional iterator:" << endl;
for(auto it = vi1.end() - 1; it >= vi1.begin(); --it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
編集:ループの最後の繰り返しの間に
を追加しましたエラーメッセージ
イメージは実行時に表示される画像です。 – user1543042
@DimChtzそのバージョンは最初の要素を反復しません –
これは[the - >演算子]のケースだと思います(https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c ): 'for(auto i = vi1.size(); i - > 0;)' –