summaryrefslogtreecommitdiff
path: root/graphs/cpp/war/regiment.cc
diff options
context:
space:
mode:
Diffstat (limited to 'graphs/cpp/war/regiment.cc')
-rw-r--r--graphs/cpp/war/regiment.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/graphs/cpp/war/regiment.cc b/graphs/cpp/war/regiment.cc
new file mode 100644
index 0000000..3534ced
--- /dev/null
+++ b/graphs/cpp/war/regiment.cc
@@ -0,0 +1,38 @@
+#include "regiment.hh"
+
+#include <vector>
+
+void Regiment::join_by(Regiment& r)
+{
+ if (r.soldiers_.empty())
+ return;
+ std::vector<Soldier*> v{ r.soldiers_.rbegin(), r.soldiers_.rend() };
+ while (!v.empty())
+ {
+ this->soldiers_.push_back(v.back());
+ v.pop_back();
+ }
+ r.soldiers_.clear();
+}
+size_t Regiment::count() const
+{
+ return soldiers_.size();
+}
+void Regiment::add_soldier(Soldier* s)
+{
+ soldiers_.push_back(s);
+}
+void Regiment::print_state() const
+{
+ for (auto soldier : soldiers_)
+ {
+ soldier->print_state();
+ }
+}
+void Regiment::scream() const
+{
+ for (auto soldier : soldiers_)
+ {
+ soldier->scream();
+ }
+} \ No newline at end of file