\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{mikeyg} \pdfinfo{ /Title (exam-1-c.pdf) /Creator (Cheatography) /Author (mikeyg) /Subject (Exam 1 C++ Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Exam 1 C++ Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{mikeyg} via \textcolor{DarkBackground}{\uline{cheatography.com/211314/cs/45756/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}mikeyg \\ \uline{cheatography.com/mikeyg} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 24th February, 2025.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Full Class Array (with Big Three)}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{template \textless{}typename T\textgreater{} \newline class ABQ \{ \newline private: \newline T{\emph{ data; \newline size\_t current\_size; \newline size\_t max\_capacity; \newline size\_t front; \newline size\_t back; \newline float scale\_factor; \newline public: \newline ABQ() \{ \newline this -\textgreater{} max\_capacity = 1; \newline this -\textgreater{} current\_size = 0; \newline this -\textgreater{} front = 0; \newline this -\textgreater{} back = 0; \newline this-\textgreater{}scale\_factor = 2.0f; \newline data = new T{[}max\_capacity{]}; \newline \} \newline ABQ(int capacity) \{ \newline this -\textgreater{} max\_capacity = capacity; \newline this -\textgreater{} current\_size = 0; \newline this -\textgreater{} front = 0; \newline this -\textgreater{} back = 0; \newline this-\textgreater{}scale\_factor = 2.0f; \newline data = new T{[}max\_capacity{]}; \newline \} \newline ABQ(const ABQ \&d) \{ \newline this -\textgreater{} max\_capacity = d.max\_capacity; \newline this -\textgreater{} current\_size = d.current\_size; \newline this -\textgreater{} front = d.front; \newline this -\textgreater{} back = d.back; \newline this-\textgreater{}scale\_factor = d.scale\_factor; \newline data = new T{[}max\_capacity{]}; \newline for (size\_t i = 0; i \textless{} current\_size; i++) \{ \newline data{[}i{]} = d.data{[}i{]}; \newline \} \newline \} \newline ABQ \&operator=(const ABQ \&d) \{ \newline if (this != \&d) \{ \newline delete {[}{]} data; \newline this -\textgreater{} max\_capacity = d.max\_capacity; \newline this -\textgreater{} current\_size = d.current\_size; \newline this -\textgreater{} front = d.front; \newline this -\textgreater{} back = d.back; \newline this-\textgreater{}scale\_factor = d.scale\_factor; \newline data = new T{[}max\_capacity{]}; \newline for (size\_t i = 0; i \textless{} current\_size; i++) \{ \newline data{[}i{]} = d.data{[}i{]}; \newline \} \newline \} \newline return }}this; \newline \} \newline \textasciitilde{}ABQ() \{ \newline delete {[}{]} data; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Module 1}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\#pragma once // prevents including multiple times \newline \#include "functions.h" // gets functions \& classes from file \newline \#include \textless{}iostream\textgreater{} // includes official string directory \newline \newline FUNCTIONS \newline int addNum(int x, int y); // prototype \newline int addNum(int a, int b)\{ // definition \newline return a + b; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Pointers}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{int x = 16; \newline int{\emph{ xPtr = \&x; // Creates pointer int }}xPtr2 = \&x; // Also works \newline int{\emph{ ptr = nullptr; // Points to nothing \newline }}xPtr = 10; // Changes x \newline \newline // References must be initialized \newline int\& xRef = x; // Creates reference to x int \&xRef2 = x; // Also works \newline // xRef and x have same memory address \newline xRef = 10; // Changes x and xRef \newline \newline // Changes variable passed in through pointer \newline void passByPointer(int{\emph{ x)\{ \newline }}x = 30; \newline \} \newline // Changes variable passed in through reference \newline void passByRef(int\& x)\{ \newline x = 40; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Constant}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Foo::Foo(const Foo\&); // passes in the parameter as a const \newline const int{\emph{ Foo::getData(); // returns a const int}} \newline int Foo::getCount(int index) const; // makes function const \newline int someVal = 50; \newline // Cannot modify the value by dereferencing a pointer \newline const int{\emph{ pointer1 = \&someVal; \newline // Cannot change the address the pointer is pointing to \newline int}} const pointer2 = \&someVal; \newline const int* const pointer3 = \&someVal; // Can't change anything} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{C Style}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{In C, the end of a char* C-style string is defined by the null terminator ('\textbackslash{}0'). This special character marks the end of the string in memory, allowing functions like strlen(), strcpy(), and strcmp() to know where the string ends. Without the null terminator, these functions would continue reading memory beyond the string, causing errors. For example, the string "Hello" in memory is stored as {[}'H', 'e', 'l', 'l', 'o', '\textbackslash{}0'{]}. The most common way to define a null-terminated string in C is by using a string literal, such as char str{[}{]} = "Hello";, which automatically includes the null terminator. Defining a string manually without the null terminator, like char str{[}{]} = \{'H', 'e', 'l', 'l', 'o'\};, is incorrect because it doesn't mark the end of the string. Another valid but less common way is char str{[}{]} = \{'H', 'e', 'l', 'l', 'o', '\textbackslash{}0'\};. However, using string literals is the preferred and more concise method.% Row Count 19 (+ 19) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Operator Overloading}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{DynamicArray operator+(const DynamicArray\& other) \{ \newline int newSize = max(size, other.size); \newline DynamicArray temp(newSize); // Create new array with size based on the max size \newline for (int i = 0; i \textless{} size \&\& i \textless{} other.size; ++i) \{ \newline temp.arr{[}i{]} = arr{[}i{]} + other.arr{[}i{]}; \newline \} \newline return temp; \newline \} \newline \newline DynamicArray\& operator+=(const DynamicArray\& other) \{ \newline int newSize = max(size, other.size); \newline if (newSize \textgreater{} capacity) \{ \newline resize(newSize); // Resize if necessary \newline \} \newline for (int i = 0; i \textless{} other.size; ++i) \{ \newline arr{[}i{]} += other.arr{[}i{]}; \newline \} \newline size = newSize; \newline return {\emph{this; // Return current object for chaining \newline \} \newline \newline DynamicArray operator-(const DynamicArray\& other) \{ \newline int newSize = max(size, other.size); \newline DynamicArray temp(newSize); // Create new array with size based on the max size \newline for (int i = 0; i \textless{} size \&\& i \textless{} other.size; ++i) \{ \newline temp.arr{[}i{]} = arr{[}i{]} - other.arr{[}i{]}; \newline \} \newline return temp; \newline \} \newline \newline DynamicArray\& operator-=(const DynamicArray\& other) \{ \newline int newSize = max(size, other.size); \newline if (newSize \textgreater{} capacity) \{ \newline resize(newSize); // Resize if necessary \newline \} \newline for (int i = 0; i \textless{} other.size; ++i) \{ \newline arr{[}i{]} -= other.arr{[}i{]}; \newline \} \newline size = newSize; \newline return }}this; // Return current object for chaining \newline \} \newline \newline bool operator==(const DynamicArray\& other) const \{ \newline if (size != other.size) \{ \newline return false; \newline \} \newline for (int i = 0; i \textless{} size; ++i) \{ \newline if (arr{[}i{]} != other.arr{[}i{]}) \{ \newline return false; \newline \} \newline \} \newline return true; \newline \} \newline \newline bool operator!=(const DynamicArray\& other) const \{ \newline return !(*this == other); // Using == operator \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}