am citit ca la ONI se compileaza cu standardul C++ 98. Nu stiu cu ce se evalueaza pe infoarena, dar sunt surse care fac #include si tr1 si folosesc librarii din C++ 11. Intreb pentru ca ma intereseaza daca as putea sa folosesc tr1/unordered_set
unordered_set si toate cele au fost introduse in TR1, care e un set propus de adaugiri la C++03. Pana la aparitia C++11, stateau toate in namespace-ul std::tr1. Odata cu aparaitia lui C++11, au fost facute mai "oficiale" si au fost copiate in namespace-ul std.
gcc are un parametru, -std, care ii spune ce standard de C++ vrei sa urmeze. Cei de la ONI sigur nu il seteaza, asa ca se foloseste valoarea default, -std=gnu++98. Asta nu e tocmai C++98 precum i-ar indica numele, ci e C++03 cu diverse manarii gcc-specific. In practica, poti folosi TR1 in asta.
Exemplu de program care foloseste TR1:
#include<cstdio>
#include<tr1/unordered_set>
static std::tr1::unordered_set<int> st;
int main(void){
int a;
scanf("%d",&a);
st.insert(a);
if(st.count(a))
puts("Numarul pe care tocmai l-am pus in unordered_set se afla in unordered_set. Totul e in regula.");
else
puts("Numarul pe care tocmai l-am pus in unordered_set nu se afla in unordered_set. glibc isi bate joc de mine.");
return 0;
}
Eu zic ca, in principiu, daca un program se compileaza pe calculatorul pe care dai ONI, se compileaza si pe evaluatorul ONI. Poti folosi acest lucru pentru a determina daca ceva se compileaza pe evaluator.