diff --git a/CPlusPlus/CPlusPlus.sln b/CPlusPlus/CPlusPlus.sln
index 508f78b..d70db05 100644
--- a/CPlusPlus/CPlusPlus.sln
+++ b/CPlusPlus/CPlusPlus.sln
@@ -9,6 +9,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Forward_Declaration", "Forw
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Classes", "Classes\Classes.vcxproj", "{6254C365-0DB4-44EB-A7FD-3AFA5980A219}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Collections", "Collections\Collections.vcxproj", "{7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pointers", "Pointers\Pointers.vcxproj", "{2706F4B0-BA3F-49A4-BC54-59F9764A974F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
@@ -55,6 +59,30 @@ Global
{6254C365-0DB4-44EB-A7FD-3AFA5980A219}.Release|x64.Build.0 = Release|x64
{6254C365-0DB4-44EB-A7FD-3AFA5980A219}.Release|x86.ActiveCfg = Release|Win32
{6254C365-0DB4-44EB-A7FD-3AFA5980A219}.Release|x86.Build.0 = Release|Win32
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Debug|ARM64.Build.0 = Debug|ARM64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Debug|x64.ActiveCfg = Debug|x64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Debug|x64.Build.0 = Debug|x64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Debug|x86.ActiveCfg = Debug|Win32
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Debug|x86.Build.0 = Debug|Win32
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Release|ARM64.ActiveCfg = Release|ARM64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Release|ARM64.Build.0 = Release|ARM64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Release|x64.ActiveCfg = Release|x64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Release|x64.Build.0 = Release|x64
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Release|x86.ActiveCfg = Release|Win32
+ {7F3BDA2C-AB30-4D85-8C4E-ABF7B99EA179}.Release|x86.Build.0 = Release|Win32
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Debug|ARM64.Build.0 = Debug|ARM64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Debug|x64.ActiveCfg = Debug|x64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Debug|x64.Build.0 = Debug|x64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Debug|x86.ActiveCfg = Debug|Win32
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Debug|x86.Build.0 = Debug|Win32
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Release|ARM64.ActiveCfg = Release|ARM64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Release|ARM64.Build.0 = Release|ARM64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Release|x64.ActiveCfg = Release|x64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Release|x64.Build.0 = Release|x64
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Release|x86.ActiveCfg = Release|Win32
+ {2706F4B0-BA3F-49A4-BC54-59F9764A974F}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/CPlusPlus/Classes/Vector3.h b/CPlusPlus/Classes/Vector3.h
index 139cab9..8665e9b 100644
--- a/CPlusPlus/Classes/Vector3.h
+++ b/CPlusPlus/Classes/Vector3.h
@@ -8,4 +8,4 @@ struct Vector3
Vector3() : x(0.0f), y(0.0f), z(0.0f) {}
Vector3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}
-};
\ No newline at end of file
+};
diff --git a/CPlusPlus/Collections/Collections.vcxproj b/CPlusPlus/Collections/Collections.vcxproj
new file mode 100644
index 0000000..9a7b6da
--- /dev/null
+++ b/CPlusPlus/Collections/Collections.vcxproj
@@ -0,0 +1,188 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
+
+
+ 17.0
+ Win32Proj
+ {7f3bda2c-ab30-4d85-8c4e-abf7b99ea179}
+ Collections
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CPlusPlus/Collections/Collections.vcxproj.filters b/CPlusPlus/Collections/Collections.vcxproj.filters
new file mode 100644
index 0000000..a821b21
--- /dev/null
+++ b/CPlusPlus/Collections/Collections.vcxproj.filters
@@ -0,0 +1,30 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/CPlusPlus/Collections/grid.cpp b/CPlusPlus/Collections/grid.cpp
new file mode 100644
index 0000000..bd1af72
--- /dev/null
+++ b/CPlusPlus/Collections/grid.cpp
@@ -0,0 +1,6 @@
+#include "grid.h"
+
+int calculateIndex(int x, int y)
+{
+ return x + y * COLUMNS;
+}
diff --git a/CPlusPlus/Collections/grid.h b/CPlusPlus/Collections/grid.h
new file mode 100644
index 0000000..6f9fb9b
--- /dev/null
+++ b/CPlusPlus/Collections/grid.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#define COLUMNS 10
+#define ROWS 5
+
+int calculateIndex(int x, int y);
\ No newline at end of file
diff --git a/CPlusPlus/Collections/main.cpp b/CPlusPlus/Collections/main.cpp
new file mode 100644
index 0000000..654c543
--- /dev/null
+++ b/CPlusPlus/Collections/main.cpp
@@ -0,0 +1,88 @@
+#include
+#include
+#include
+
+#include "grid.h"
+
+using namespace std;
+
+void printArray(int numbers[]);
+void printArray(int numbers[], size_t count);
+
+int main()
+{
+ // C arrays
+ int numbers[10];
+
+ for (size_t i = 0; i < 10; i++)
+ {
+ numbers[i] = 0;
+ }
+
+ int numbers2[] = { 0, 1, 2, 3, 4 };
+ int numbers3[10] = { 0, 1, 2, 3, 4 };
+
+ numbers[0] = 10;
+
+ cout << "numbers[5]: " << numbers[5] << endl;
+
+ // 2D array - 10 columns, 5 rows
+ int grid[COLUMNS * ROWS] = {};
+ grid[calculateIndex(3, 2)] = 10; // 4th column, 3rd row
+
+ // size has to be always constant
+ const int count = 10;
+ int numbers4[count] = {};
+
+ int length = sizeof(numbers) / sizeof(numbers[0]); // works only with local constant sized arrays
+ for (size_t i = 0; i < size(numbers); i++) // works only with local constant sized arrays, but it is safer than sizeof
+ {
+ cout << numbers[i] << " ";
+ }
+ cout << endl;
+
+ printArray(numbers);
+ printArray(numbers, size(numbers));
+
+ // "dynamic" (...) arrays
+
+ // stl collections
+ vector numbers5;
+ vector numbers6 = { 0, 1, 2, 3, 4 };
+ numbers5.push_back(10); // add an item at the end
+ numbers5.pop_back(); // remove the last item
+ numbers6[1] *= 2;
+ vector numbers7;
+ numbers7.reserve(100);
+ numbers7.shrink_to_fit();
+
+ printArray(numbers6.data(), numbers6.size());
+
+ list numbersList;
+ numbersList.push_back(10);
+ numbersList.push_front(0);
+ //numbersList[0] = 5; // random access is not available for lists
+
+ return 0;
+}
+
+void printArray(int numbers[])
+{
+ int length = sizeof(numbers) / sizeof(numbers[0]); // works not outside of the local scope
+ cout << "sizeof(numbers): " << sizeof(numbers) << endl;
+
+ //for (size_t i = 0; i < size(numbers); i++) // size is not working outside of the local scope
+ //{
+ // cout << numbers[i] << " ";
+ //}
+ //cout << endl;
+}
+
+void printArray(int numbers[], size_t count)
+{
+ for (size_t i = 0; i < count; i++)
+ {
+ cout << numbers[i] << " ";
+ }
+ cout << endl;
+}
diff --git a/CPlusPlus/Pointers/Pointers.vcxproj b/CPlusPlus/Pointers/Pointers.vcxproj
new file mode 100644
index 0000000..1608621
--- /dev/null
+++ b/CPlusPlus/Pointers/Pointers.vcxproj
@@ -0,0 +1,188 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
+
+
+ 17.0
+ Win32Proj
+ {2706f4b0-ba3f-49a4-bc54-59f9764a974f}
+ Pointers
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CPlusPlus/Pointers/Pointers.vcxproj.filters b/CPlusPlus/Pointers/Pointers.vcxproj.filters
new file mode 100644
index 0000000..54bcd79
--- /dev/null
+++ b/CPlusPlus/Pointers/Pointers.vcxproj.filters
@@ -0,0 +1,30 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/CPlusPlus/Pointers/functions.cpp b/CPlusPlus/Pointers/functions.cpp
new file mode 100644
index 0000000..16d00f5
--- /dev/null
+++ b/CPlusPlus/Pointers/functions.cpp
@@ -0,0 +1,26 @@
+#include "functions.h"
+
+void changeInteger(int n)
+{
+ n *= 2;
+}
+
+int changeIntegerPerReturn(int n)
+{
+ return n * 2;
+}
+
+bool changeIntegerPerPointer(int* pN)
+{
+ if (pN == nullptr) return false;
+
+ *pN *= 2;
+
+ return true;
+}
+
+bool changeIntegerPerReference(int& n)
+{
+ n *= 2;
+ return true;
+}
diff --git a/CPlusPlus/Pointers/functions.h b/CPlusPlus/Pointers/functions.h
new file mode 100644
index 0000000..d223ff1
--- /dev/null
+++ b/CPlusPlus/Pointers/functions.h
@@ -0,0 +1,6 @@
+#pragma once
+
+void changeInteger(int n);
+int changeIntegerPerReturn(int n);
+bool changeIntegerPerPointer(int* pN);
+bool changeIntegerPerReference(int& n);
\ No newline at end of file
diff --git a/CPlusPlus/Pointers/main.cpp b/CPlusPlus/Pointers/main.cpp
new file mode 100644
index 0000000..58c28d1
--- /dev/null
+++ b/CPlusPlus/Pointers/main.cpp
@@ -0,0 +1,37 @@
+#include
+
+#include "functions.h"
+
+using namespace std;
+
+int main()
+{
+ // general
+ int* pNumber = nullptr; // pointer definition, always initialize a pointer (at least with nullptr)
+ pNumber = new int(0); // creates a new integer value on the heap
+
+ cout << "size of pointer: " << sizeof(pNumber) << endl;
+ cout << "size of pointer data: " << sizeof(*pNumber) << endl;
+
+ *pNumber = 789;
+
+ //pNumber = new int(0); // BAD BAD - memory leak, because we override an existin g pointer address with a new one without saving or deleting the old one
+
+ // here are 100s lines of code
+
+ if (pNumber != nullptr)
+ {
+ delete pNumber;
+ pNumber = nullptr;
+ }
+
+ // pointer as references outside local scope
+ int number = 10;
+ changeInteger(number);
+ number = changeIntegerPerReturn(number);
+ changeIntegerPerPointer(&number);
+ changeIntegerPerPointer(pNumber);
+ changeIntegerPerReference(number);
+
+ return 0;
+}
\ No newline at end of file