====== 2. C++ Language Reference ====== Programming languages are a tool. While many modern programming languages are designed to be general purpose, some programming languages may be better suited to solve certain problems than others. ===== When to use C++ ===== Whenever you have questions about time or memory limits, C++ is typically a safer path than [[python3|Python3]]. C++ contains most of the C library (when limits really put you in a pinch) and(at a higher level) boasts a well-established [[http://www.cplusplus.com/reference/|standard library]] of generics through templates. Many competitive programmers are versed in preprocessor macros that make C++ feel more like [[python3|Python3]] as well. ===== When not to use C++ ===== Unlike [[python3|Python3]], it is difficult to argue that C++ is ever a //poor// choice for a contest problem. Well-written C++ is difficult to beat in terms of runtime efficiency. However, for all the benefits of C++, well written [[python3|Python3]] can be generated in fewer keystrokes than is possible in C++ or Java.((The standard "[[files:cpp:hello|Hello World!]]" in C++ takes can be accomplished in 107 keystrokes (not including editor commands) including the inclusion of ''iostream'', the use of ''namespace std'', typical whitespace/formatting, and C++ streams for output. It is virtually impossible (in any language) to beat the 22 characters of "[[files:python3:hello|Hello World]]" in Python3.)) This is due to both the terse syntax, and the lack of any required boilerplate in the most basic program. ===== Input/Output ===== * [[cpp:input|Input]] for Programming Contests * [[cpp:output|Output]] for Programming Contests ===== Data Structures ===== ==== Sequential Structures ==== * [[cpp:vector|Vectors]] * [[cpp:list|(Linked) Lists]] * [[cpp:string|Strings]] * [[cpp:tuple|Tuples]] * [[cpp:pair|Pairs]] * [[cpp:stack|Stacks]] * [[cpp:queue|Queues]] * [[cpp:priority_queue|Priority Queues]] * [[cpp:bitset|Bitsets]] ==== Non-Sequential Structures ==== * [[cpp:unordered_map|Unordered Maps]] * [[cpp:map|Maps]] * [[cpp:unordered_set|Unordered Sets]] * [[cpp:set|Sets]] ===== Mathematical Types and Operations ===== ==== Numeric Types ==== * [[cpp:math|CMath]]