#include #include #include #include #include #include #include #include #include /* Implement Sorted_Insertion_Iterator here */ /* Implement sorted_Inserter() here */ int main() { // Testcase #1 { std::vector v { 7, 3, -1, 4 }; std::vector output { }; auto it = sorted_inserter(output); for (int e : v) { *it++ = e; } assert(( output == std::vector{ -1, 3, 4, 7 } )); } // Testcase #2 { std::list output { }; auto it = sorted_inserter(output); for (int i = 3; i > 0; --i) { *it++ = i; } assert(( output == std::list{ 1, 2, 3 } )); } // Testcase #3 { std::vector v { 1.2, 3.4, 5.6, 7.8 }; std::deque output { }; auto it = sorted_inserter(output, std::greater{}); std::copy(std::begin(v), std::end(v), it); assert(( output == std::deque{ 7.8, 5.6, 3.4, 1.2 } )); } // Testcase #4 { std::vector v { -1, 2, -3, 4 }; std::vector output { }; auto it = sorted_inserter(output, [](int a, int b) { return std::abs(a) < std::abs(b); }); std::copy(std::begin(v), std::end(v), it); assert(( output == std::vector{ -1, 2, -3, 4 } )); } }