From a5282f9a1035a00f4e81ca3c985fa75eb61bdc2a Mon Sep 17 00:00:00 2001 From: Oskar Date: Fri, 11 Oct 2024 20:31:58 +0200 Subject: more --- reverse-containers.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'reverse-containers.cpp') diff --git a/reverse-containers.cpp b/reverse-containers.cpp index fc39aed..39cdb03 100644 --- a/reverse-containers.cpp +++ b/reverse-containers.cpp @@ -123,6 +123,28 @@ std::list &reverse_list(std::list &lc) { return lc; } +std::array &reverse_array(std::array &ac) { + // This function is a little weird, not sure if i like it... + std::array tmp_ac; + auto crbeg = ac.crbegin(); + auto begin = tmp_ac.begin(); + for( ; begin != tmp_ac.cend() ; ++crbeg, ++begin) { + *begin = *crbeg; + } + + ac.swap(tmp_ac); + return ac; +} + +void print_container(std::array &ac) { + + for(auto &b : ac) { + std::cout << b << " "; + } + + std::cout << std::endl; +} + void print_container(std::string &sc) { std::cout << sc << std::endl; @@ -181,7 +203,8 @@ int main(int argc, char **argv) { int eight = 0; int nine = 0; int zero = 0; - while ((opt = getopt(argc, argv, "1234567890")) != -1) { + int a_letter = 0; + while ((opt = getopt(argc, argv, "1234567890a")) != -1) { switch (opt) { case '1': @@ -232,20 +255,26 @@ int main(int argc, char **argv) { zero = 1; + break; + case 'a': + + a_letter = 1; + break; } } - if((one + two + three + four + five + six + seven + eight + nine + zero) > 1) { + if((one + two + three + four + five + six + seven + eight + nine + zero + a_letter) > 1) { usageOUT(); return EXIT_FAILURE; } - std::string input_str = "abcdef"; - const char *input_cstr = "abcdef"; - std::list input_list = {'a', 'b', 'c', 'd', 'e', 'f'}; - std::vector input_vec = {'a', 'b', 'c', 'd', 'e', 'f'}; - std::deque input_deq = {'a', 'b', 'c', 'd', 'e', 'f'}; + std::array input_array = {'a', 'b'}; + std::string input_str = "ab"; + const char *input_cstr = "ab"; + std::list input_list = {'a', 'b'}; + std::vector input_vec = {'a', 'b'}; + std::deque input_deq = {'a', 'b'}; if(one == 1) { reverse_vector_reverse_iterator(input_vec); print_container(input_vec); @@ -307,6 +336,12 @@ int main(int argc, char **argv) { print_container(input_list); std::cout << "reverse_list" << std::endl; } + + if(a_letter == 1) { + reverse_array(input_array); + print_container(input_array); + std::cout << "" << std::endl; + } return 0; } -- cgit v1.2.3