#include #include #include using namespace std; int calculateIndex(int x, int y); 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; } numbers[0] = 10; cout << "numbers[5]: " << numbers[5] << endl; int numbers2[] = { 0, 1, 2, 3, 4 }; int numbers3[10] = { 0, 1, 2, 3, 4 }; // 2d array - 10 rows & 5 columns int grid[10 * 5]; grid[calculateIndex(3, 7)] = 10; // 4th column, 8th row // size/count have to be always const const int count = 10; int numbers4[count]; int length = sizeof(numbers) / sizeof(numbers[0]); // works locally only, arrays with const length for (size_t i = 0; i < size(numbers2); i++) // std::size is working with locally const length arrays only { cout << numbers2[i] << " "; } cout << endl; printArray(numbers4); printArray(numbers4, size(numbers4)); // "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(); // removed an item at the end numbers6[2] *= 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] = 100; // random access is not available for lists return 0; } int calculateIndex(int x, int y) { return x + y * 5; } void printArray(int numbers[]) { int length = sizeof(numbers) / sizeof(numbers[0]); // works not outside of local scope cout << "sizeof(numbers) (printArray): " << sizeof(numbers) << endl; //for (size_t i = 0; i < size(numbers); i++) // std::size is not working outside of 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; }