From a880622cb67be32d2c48cf1ca8483e3ac5967c01 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Sun, 15 May 2022 18:13:25 +0200 Subject: [PATCH] add subject and main from 42 --- .gitignore | 43 ++++++++------------ main.cpp | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 26 deletions(-) create mode 100644 main.cpp diff --git a/.gitignore b/.gitignore index b24d71e..957974d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1,16 @@ -# These are some examples of commonly ignored file patterns. -# You should customize this list as applicable to your project. -# Learn more about .gitignore: -# https://www.atlassian.com/git/tutorials/saving-changes/gitignore - -# Node artifact files +# default bitbucket gitignore node_modules/ dist/ - -# Compiled Java class files *.class - -# Compiled Python bytecode *.py[cod] - -# Log files *.log - -# Package files *.jar - -# Maven target/ dist/ - -# JetBrains IDE .idea/ - -# Unit test reports TEST*.xml - -# Generated by MacOS .DS_Store - -# Generated by Windows Thumbs.db - -# Applications *.app *.exe *.war @@ -48,3 +23,19 @@ Thumbs.db *.mov *.wmv +# 42 +*.o +*.swp +*.out +*.stackdump +*.a +*.so +*.dSYM +.vscode +*.lnk +*.zip +*.pdf +/builds + +# cube3d +containers diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..e1329eb --- /dev/null +++ b/main.cpp @@ -0,0 +1,116 @@ +#include +#include +#include +#if 1 //CREATE A REAL STL EXAMPLE + #include + #include + #include + namespace ft = std; +#else + #include + #include + #include +#endif + +#include + +#define MAX_RAM 4294967296 +#define BUFFER_SIZE 4096 +struct Buffer +{ + int idx; + char buff[BUFFER_SIZE]; +}; + + +#define COUNT (MAX_RAM / (int)sizeof(Buffer)) + +template +class MutantStack : public ft::stack +{ +public: + MutantStack() {} + MutantStack(const MutantStack& src) { *this = src; } + MutantStack& operator=(const MutantStack& rhs) + { + this->c = rhs.c; + return *this; + } + ~MutantStack() {} + + typedef typename ft::stack::container_type::iterator iterator; + + iterator begin() { return this->c.begin(); } + iterator end() { return this->c.end(); } +}; + +int main(int argc, char** argv) { + if (argc != 2) + { + std::cerr << "Usage: ./test seed" << std::endl; + std::cerr << "Provide a seed please" << std::endl; + std::cerr << "Count value:" << COUNT << std::endl; + return 1; + } + const int seed = atoi(argv[1]); + srand(seed); + + ft::vector vector_str; + ft::vector vector_int; + ft::stack stack_int; + ft::vector vector_buffer; + ft::stack > stack_deq_buffer; + ft::map map_int; + + for (int i = 0; i < COUNT; i++) + { + vector_buffer.push_back(Buffer()); + } + + for (int i = 0; i < COUNT; i++) + { + const int idx = rand() % COUNT; + vector_buffer[idx].idx = 5; + } + ft::vector().swap(vector_buffer); + + try + { + for (int i = 0; i < COUNT; i++) + { + const int idx = rand() % COUNT; + vector_buffer.at(idx); + std::cerr << "Error: THIS VECTOR SHOULD BE EMPTY!!" < copy = map_int; + } + MutantStack iterable_stack; + for (char letter = 'a'; letter <= 'z'; letter++) + iterable_stack.push(letter); + for (MutantStack::iterator it = iterable_stack.begin(); it != iterable_stack.end(); it++) + { + std::cout << *it; + } + std::cout << std::endl; + return (0); +}