From 6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Thu, 2 Jul 2026 11:55:17 -0700 Subject: Init --- Homework/cs3460/vector/main.cpp | 103 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 Homework/cs3460/vector/main.cpp (limited to 'Homework/cs3460/vector/main.cpp') diff --git a/Homework/cs3460/vector/main.cpp b/Homework/cs3460/vector/main.cpp new file mode 100644 index 0000000..7904e6a --- /dev/null +++ b/Homework/cs3460/vector/main.cpp @@ -0,0 +1,103 @@ +#include "vector.hpp" + +#include +#include + +template void report(T &vector) { + for (auto i = vector.begin(); i != vector.end(); i++) { + std::cout << *i << ", "; + } + std::cout << std::endl; +} + +void testBoolSpecialization() { + usu::vector vector; + + // Adding 12 values because this will span one and a half bytes, + // giving a good exercise to the specialization. + for (auto i = 0; i < 12; i++) { + vector.add(i % 2 == 0); + } + + // Counted for loop + std::cout << " Specialization: Counted for loop\n"; + for (std::size_t i = 0; i < vector.size(); i++) { + std::cout << vector[i] << ", "; + } + std::cout << std::endl; + + // Iterator for loop + std::cout << " Specialization: Iterator for loop\n"; + for (auto i = vector.begin(); i != vector.end(); i++) { + std::cout << *i << ", "; + } + std::cout << std::endl; + + // Range-based for loop + std::cout << " Specialization: Ranged-based for loop\n"; + for (auto &&value : vector) { + std::cout << value << ", "; + } + std::cout << std::endl << std::endl; + + usu::vector vector1{true, true, true, false, false, + false, true, false, false, true}; + usu::vector vector2{true, true, true, false, false, + false, true, false, false, true}; + usu::vector vector3{true, true, true, false, false, + false, true, false, false, true}; + usu::vector vector4{true, true, true, false, false, + false, true, false, false, true}; + usu::vector vector5{true, true, true, false, false, + false, true, false, false, true}; + + std::cout << "original, insert(0, false), remove(0)" << std::endl; + report(vector1); + vector1.insert(0, false); + report(vector1); + vector1.remove(0); + report(vector1); + std::cout << std::endl; + + std::cout << "original, insert(1, false), remove(1)" << std::endl; + report(vector2); + vector2.insert(1, false); + report(vector2); + vector2.remove(1); + report(vector2); + std::cout << std::endl; + + std::cout << "original, insert(3, true), remove(3)" << std::endl; + report(vector3); + vector3.insert(3, true); + report(vector3); + vector3.remove(3); + report(vector3); + std::cout << std::endl; + + std::cout << "original, insert(4, true), remove(4)" << std::endl; + report(vector4); + vector4.insert(4, true); + report(vector4); + vector4.remove(4); + report(vector4); + std::cout << std::endl; + + std::cout << "original, insert(6, true), remove(6)" << std::endl; + report(vector5); + vector5.insert(6, true); + report(vector5); + vector5.remove(6); + report(vector5); +} + +// ------------------------------------------------------------------ +// +// Final project, a vector with a bool specialization +// +// ------------------------------------------------------------------ +int main() { + testBoolSpecialization(); + + return 0; +} -- cgit v1.3