#include #include #include #include "helpers.h" using namespace std; // int main() int main(int argc, char* argv[]) { // C arrays int numbers[10]; for (int 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] = 1; cout << "numbers[5]: " << numbers[5] << endl; cout << "numbers2[5]: " << numbers2[5] << endl; cout << "numbers3[5]: " << numbers3[5] << endl; // 2D array - 10 columns, 5 rows int grid[ROWS * COLUMNS] = {}; grid[calculateGridIndex(0, 0)] = 1; int grid2[ROWS][COLUMNS] = {}; // size of an array has to be constant always const int COUNT = 10; int numbers4[COUNT] = {}; // "dynamic" heap arrays int count2 = 10; int* pNumbers = new int[count2]; pNumbers[0] = 1; int* pNumbers2 = pNumbers; // pointer looks onto first element for (size_t i = 0; i < count2; i++) // size can't be used for heap arrays { cout << pNumbers2 << ": " << *pNumbers2 << endl; pNumbers2++; } delete[] pNumbers; // CAUTION - heap arrays have to be deleted with delete[] pNumbers = pNumbers2 = nullptr; // 2d heap arrays int** pGrid = new int*[ROWS]; for (size_t i = 0; i < ROWS; i++) { pGrid[i] = new int[COLUMNS]; } for (size_t i = 0; i < ROWS; i++) { // delete inner arrays first delete[] pGrid[i]; pGrid[i] = nullptr; } delete[] pGrid; // delete outer array pGrid = nullptr; int length = sizeof(numbers) / sizeof(numbers[0]); int length2 = size(numbers); printArray(numbers); printArray(numbers, length); // stl collections std::vector numbers5 = {0, 1, 2, 3, 4}; vector numbers6; vector numbers7(100); cout << "numbers5 size is " << numbers5.size() << " of " << numbers5.capacity() << endl; cout << "numbers6 size is " << numbers6.size() << " of " << numbers6.capacity() << endl; cout << "numbers7 size is " << numbers7.size() << " of " << numbers7.capacity() << endl; numbers5.push_back(100); numbers6.push_back(100); numbers7.push_back(100); cout << "numbers5 size is " << numbers5.size() << " of " << numbers5.capacity() << endl; cout << "numbers6 size is " << numbers6.size() << " of " << numbers6.capacity() << endl; cout << "numbers7 size is " << numbers7.size() << " of " << numbers7.capacity() << endl; numbers5.pop_back(); numbers5.pop_back(); // numbers6.pop_back(); numbers6.pop_back(); // BE CAREFUL: also stl containers have no safety checks numbers7.pop_back(); numbers7.pop_back(); cout << "numbers5 size is " << numbers5.size() << " of " << numbers5.capacity() << endl; cout << "numbers6 size is " << numbers6.size() << " of " << numbers6.capacity() << endl; cout << "numbers7 size is " << numbers7.size() << " of " << numbers7.capacity() << endl; numbers6[0] = 200; numbers6.reserve(1000); numbers6.shrink_to_fit(); printArray(numbers6.data(), numbers6.size()); list numbers8; list numbers9 = {0, 1, 2, 3, 4}; // numbers9[3] = 10; // random access is not available in list list::iterator it = numbers9.begin(); for (; it != numbers9.end(); ++it) { cout << *it << " "; } cout << endl; numbers9.push_front(-1); numbers9.push_back(5); it = numbers9.begin(); // -1 it++; // 0 it++; // 1 it++; // 2 numbers9.insert(it, 15); for (it = numbers9.begin(); it != numbers9.end(); ++it) { cout << *it << " "; } cout << endl; for (int n : numbers9) { } for_each(numbers9.begin(), numbers9.end(), [](int n) { cout << n << " "; }); cout << endl; return 0; }