Added: C++ projects
This commit is contained in:
Generated
+10
@@ -0,0 +1,10 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Ignored default folder with query files
|
||||
/queries/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||
</project>
|
||||
@@ -0,0 +1,8 @@
|
||||
cmake_minimum_required(VERSION 4.3)
|
||||
project(Collections)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
|
||||
add_executable(Collections main.cpp
|
||||
helpers.h
|
||||
helpers.cpp)
|
||||
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// Created by David Hackbarth on 21.09.26.
|
||||
//
|
||||
|
||||
#include "helpers.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <ranges>
|
||||
|
||||
int calculateGridIndex(int row, int column)
|
||||
{
|
||||
return row * COLUMNS + column;
|
||||
}
|
||||
|
||||
void printArray(int numbers[])
|
||||
{
|
||||
int length = sizeof(numbers) / sizeof(numbers[0]);
|
||||
// int length2 = std::ranges::size(numbers);
|
||||
|
||||
for (int i = 0; i < length; ++i)
|
||||
{
|
||||
std::cout << "numbers[" << i << "]:" << numbers[i] << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void printArray(int numbers[], size_t length)
|
||||
{
|
||||
for (int i = 0; i < length; ++i)
|
||||
{
|
||||
std::cout << "numbers[" << i << "]:" << numbers[i] << std::endl;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// Created by David Hackbarth on 21.09.26.
|
||||
//
|
||||
|
||||
#ifndef COLLECTIONS_HELPERS_H
|
||||
#define COLLECTIONS_HELPERS_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#define ROWS 5
|
||||
#define COLUMNS 10
|
||||
|
||||
int calculateGridIndex(int row, int column);
|
||||
void printArray(int numbers[]);
|
||||
void printArray(int numbers[], size_t length);
|
||||
|
||||
template <typename T>
|
||||
void printVector(std::vector<T> numbers)
|
||||
{
|
||||
for (int i = 0; i < numbers.size(); ++i)
|
||||
{
|
||||
std::cout << "numbers[" << i << "]:" << numbers[i] << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
#endif //COLLECTIONS_HELPERS_H
|
||||
@@ -0,0 +1,141 @@
|
||||
#include <iostream>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
#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<int> numbers5 = {0, 1, 2, 3, 4};
|
||||
vector<int> numbers6;
|
||||
vector<int> 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<int> numbers8;
|
||||
list<int> numbers9 = {0, 1, 2, 3, 4};
|
||||
// numbers9[3] = 10; // random access is not available in list
|
||||
list<int>::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;
|
||||
}
|
||||
Reference in New Issue
Block a user