There is a lot of information about programming in C++ for competitions as well as almost all algorithm implementations are written in C++ language (e.g. e-maxx site, topcoder tutorials etc.). So from there we can take some best practices of what to use or not to use when writing problem solutions.
For Java there is no such resources as I know. If not I would be really thankful to obtain links to them.
It's good to read codes in Java of target coders like Petr or Egor but it would be better to have it in one place (like e-maxx site).
Additionally I want to ask some questions interesting for me.
How do you know that some problem need to be written in C++ instead of Java? For example 524F - И снова правильная скобочная последовательность that Petr wrote in C++ not Java. I don't see any specific data structure like
std::bitset
that Java don't have.Which tricks are not recommended to use in Java (like you need to pay attention to autoboxing, that may do your solution more slow unexpectedly) ?
I like very much C++'s
std::pair<T1, T2>
and it seems that it's much more efficient that self-written Java analog (e.g. https://github.com/EgorKulikov/yaal/blob/master/lib/main/net/egork/collections/Pair.java). Is it true or not? I think so because of creation of Object for each element of Pair (that need to be done because generics in Java cannot be declared asPair<int, int>
but must bePair<Integer, Integer>
). So would be the implementation of Pair for each caseint first, second
,int first; long second;
etc more efficient than such of Egor?