visual studioでは通るがAOJでは通らないコード(C++)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
akil
記事: 2
登録日時: 5年前

visual studioでは通るがAOJでは通らないコード(C++)

#1

投稿記事 by akil » 5年前

visual stdio 2013 expressでは動くものの、Aizu Online Judgeではコンパイルエラーとなるプログラムについてお聞きしたいです。
以下がそのコードです。(AOJでのユーザー名バレを避けるため関係あると思われる部分のみ抜粋しております。)

コード:

 
#include <iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
//
//
	reverse(hairetuA.begin() + hairetuB.back(), hairetuA.end()); 	
//
//	
}
 
AOJでのエラーコードは、
code.cpp: In function ‘int main()’:
code.cpp:24:5: error: ‘reverse’ is not a member of ‘std’
です。


なお、以下のようにしたらAOJでも通りました。

コード:

 
#include <iostream>
#include<vector>
#include<algorithm>/////////////////////////////////ここ追加
#include<string>
using namespace std;
int main(){
//
//
	reverse(hairetuA.begin() + hairetuB.back(), hairetuA.end()); 	
//
//	
}
 
お聞きしたいのは、
1、なぜvisual studio では通って AOJでは通らなかったのか?
2、ほかにもvisual studioのコンパイル とオンラインジャッジのそれで違う結果が帰ることはあるのか?
の2点です。
よろしくお願いします。

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: visual studioでは通るがAOJでは通らないコード(C++)

#2

投稿記事 by YuO » 5年前

akil さんが書きました:1、なぜvisual studio では通って AOJでは通らなかったのか?
  • VSの<iostream>か<vector>か<string>が,<algorithm>またはstd::reverseの定義された実装ファイルをインクルードしていた
  • AOJで使われている処理系ではそれがなされていなかった
というだけかと。利用するにあたりstd::reverseは<algorithm>をインクルードしなければいけないため,VSで通ったのはたまたまだと思います。
必要なヘッダーは明示的にインクルードすべきかと。

閉鎖

“C言語何でも質問掲示板” へ戻る