/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* main.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/12 19:46:35 by apommier #+# #+# */ /* Updated: 2022/10/19 18:35:21 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #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); }