Add containers module with initial implementation and integrate into CMake build system.
This commit is contained in:
Generated
+1
-1
@@ -1 +1 @@
|
||||
pointer
|
||||
containers
|
||||
Generated
+1
-1
@@ -3,7 +3,7 @@
|
||||
<component name="CMakePythonSetting">
|
||||
<option name="pythonIntegrationState" value="YES" />
|
||||
</component>
|
||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$/classes">
|
||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$/containers">
|
||||
<contentRoot DIR="$PROJECT_DIR$" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -4,3 +4,4 @@ project(cpp)
|
||||
add_subdirectory(intro)
|
||||
add_subdirectory(pointer)
|
||||
add_subdirectory(classes)
|
||||
add_subdirectory(containers)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 4.1)
|
||||
project(pointer)
|
||||
project(classes)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
|
||||
add_executable(pointer main.cpp ClassA.cpp)
|
||||
add_executable(classes main.cpp ClassA.cpp)
|
||||
|
||||
@@ -2,6 +2,36 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
ClassA::ClassA() : IComparable(), _number(0), _pDecimal(new float(0.0f)) {
|
||||
std::cout << "ClassA()" << std::endl;
|
||||
|
||||
// _pDecimal = new float(0.0f);
|
||||
}
|
||||
|
||||
ClassA::ClassA(const ClassA &other) :
|
||||
IComparable(),
|
||||
_number(other._number),
|
||||
_pDecimal(new float(*other._pDecimal)) {
|
||||
|
||||
std::cout << "ClassA(const ClassA &other)" << std::endl;
|
||||
|
||||
// // for presentation only
|
||||
// // shallow copy
|
||||
// _number = other._number;
|
||||
// *_pDecimal = *other._pDecimal;
|
||||
//
|
||||
// // deep copy
|
||||
// _number = other._number;
|
||||
// _pDecimal = new float(*other._pDecimal);
|
||||
}
|
||||
|
||||
ClassA::~ClassA() {
|
||||
std::cout << "~ClassA()" << std::endl;
|
||||
|
||||
delete _pDecimal;
|
||||
_pDecimal = nullptr;
|
||||
}
|
||||
|
||||
void ClassA::Print() {
|
||||
std::cout << "ClassA" << std::endl;
|
||||
}
|
||||
|
||||
@@ -8,16 +8,23 @@ class ClassA : public IComparable {
|
||||
|
||||
public:
|
||||
// public
|
||||
ClassA(); // default constructor
|
||||
ClassA(const ClassA& other); // copy constructor
|
||||
~ClassA() override; // destructor
|
||||
|
||||
void Print();
|
||||
int CompareTo(IComparable* other) override;
|
||||
|
||||
const float& GetDecimal() const { return *_pDecimal; }
|
||||
void SetDecimal(float decimal) { *_pDecimal = decimal; }
|
||||
|
||||
protected:
|
||||
// protected
|
||||
|
||||
private:
|
||||
// private
|
||||
int _number = 0;
|
||||
float* _pDecimal = nullptr;
|
||||
};
|
||||
|
||||
|
||||
#endif //POINTER_CLASSA_H
|
||||
@@ -1,8 +1,13 @@
|
||||
#ifndef POINTER_ICOMPARABLE_H
|
||||
#define POINTER_ICOMPARABLE_H
|
||||
#include <iostream>
|
||||
|
||||
class IComparable {
|
||||
public:
|
||||
// only for presentation purposes
|
||||
IComparable() { std::cout << "IComparable()" << std::endl; }
|
||||
virtual ~IComparable() { std::cout << "~IComparable()" << std::endl; }
|
||||
|
||||
virtual int CompareTo(IComparable* other) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "ClassA.h"
|
||||
#include <list>
|
||||
|
||||
int main() {
|
||||
ClassA a{};
|
||||
@@ -20,5 +21,24 @@ int main() {
|
||||
delete pComparable;
|
||||
pComparable = nullptr;
|
||||
|
||||
// copy object
|
||||
ClassA a2 = a;
|
||||
|
||||
std::list<ClassA> list;
|
||||
std::list<ClassA>::iterator it;
|
||||
|
||||
for (it = list.begin(); it != list.end(); ++it) {
|
||||
it->Print();
|
||||
}
|
||||
|
||||
std::list<IComparable*> list2;
|
||||
std::list<IComparable*>::iterator it2;
|
||||
|
||||
for (it2 = list2.begin(); it2 != list2.end(); ++it2) {
|
||||
(*it2)->CompareTo(&a);
|
||||
}
|
||||
|
||||
IComparable* pComparables[10];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
cmake_minimum_required(VERSION 4.1)
|
||||
project(containers)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_FLAGS -pedantic-errors)
|
||||
|
||||
add_executable(containers main.cpp
|
||||
functions.cpp)
|
||||
@@ -0,0 +1,14 @@
|
||||
#include <iostream>
|
||||
|
||||
void printArrayAtPosition(int *array, int index) {
|
||||
if (array == nullptr) {
|
||||
return;
|
||||
}
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::cout << "size of array: " << sizeof(array) << std::endl;
|
||||
std::cout << array[index] << std::endl;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
//
|
||||
// Created by David Hackbarth on 20.02.26.
|
||||
//
|
||||
|
||||
#ifndef CONTAINERS_FUNCTIONS_H
|
||||
#define CONTAINERS_FUNCTIONS_H
|
||||
|
||||
void printArrayAtPosition(int* array, int index);
|
||||
|
||||
#endif //CONTAINERS_FUNCTIONS_H
|
||||
@@ -0,0 +1,65 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
|
||||
#include "functions.h"
|
||||
|
||||
typedef std::list<float> FloatList;
|
||||
typedef FloatList::iterator FloatListIterator;
|
||||
|
||||
int main() {
|
||||
// C array
|
||||
int numbers[5] = {1, 2, 3, 4, 5}; // stack array
|
||||
const int count = 10;
|
||||
// count *= 2;
|
||||
int numbers2[count];
|
||||
numbers2[0] = 10;
|
||||
|
||||
int* numbers3 = new int[count]; // heap array
|
||||
delete[] numbers3;
|
||||
numbers3 = nullptr;
|
||||
|
||||
// numbers[10] = 100;
|
||||
|
||||
std::cout << "size of numbers: " << sizeof(numbers) << std::endl;
|
||||
|
||||
printArrayAtPosition(numbers, 19);
|
||||
|
||||
// vector
|
||||
std::vector<int> v;
|
||||
v.push_back(10);
|
||||
v.push_back(20);
|
||||
v.push_back(30);
|
||||
v.pop_back();
|
||||
v[1] = 100;
|
||||
|
||||
std::cout << "v: " << v.size() << "/" << v.capacity() << std::endl;
|
||||
|
||||
v.push_back(40);
|
||||
|
||||
std::cout << "v: " << v.size() << "/" << v.capacity() << std::endl;
|
||||
|
||||
v.push_back(50);
|
||||
|
||||
std::cout << "v: " << v.size() << "/" << v.capacity() << std::endl;
|
||||
|
||||
v.push_back(60);
|
||||
|
||||
std::cout << "v: " << v.size() << "/" << v.capacity() << std::endl;
|
||||
|
||||
v.reserve(100);
|
||||
|
||||
std::cout << "v: " << v.size() << "/" << v.capacity() << std::endl;
|
||||
|
||||
printArrayAtPosition(v.data(), 1);
|
||||
|
||||
// list
|
||||
std::list<int> l;
|
||||
std::list<int>::iterator it;
|
||||
|
||||
for (it = l.begin(); it != l.end(); ++it) {
|
||||
std::cout << *it << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user