From 7aad87810f29b63725dc8984820ad748eb5031d9 Mon Sep 17 00:00:00 2001 From: Segcolt <9hmbzr275@mozmail.com> Date: Sat, 12 Oct 2024 21:24:16 -0300 Subject: [PATCH] Stop pushing on the vector For better performance --- sa.hpp | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/sa.hpp b/sa.hpp index 2f86bb7..f28a5c0 100644 --- a/sa.hpp +++ b/sa.hpp @@ -58,25 +58,28 @@ class solution { its.insert(i); } + this->items.resize(items.size()); + size_t i = 0; + long long cap = capacity; - while (!its.empty()) { - auto itr = its.upper_bound(cap); - if (itr == its.begin()) { - cap = capacity; - cap -= *its.begin(); - this->items.push_back(*its.begin()); - its.erase(its.begin()); - continue; - } - itr--; - cap -= *itr; - this->items.push_back(*itr); - its.erase(itr); - } + while (!its.empty()) { + auto itr = its.upper_bound(cap); + if (itr == its.begin()) { + cap = capacity; + cap -= *its.begin(); + itr = its.begin(); + } else { + itr--; + cap -= *itr; + } + this->items[i] = *itr; + its.erase(itr); + i++; + } - fitness = calculate_boxes(); - } + fitness = calculate_boxes(); + } void setneighbor() { // Gera um vizinho da solução std::uniform_int_distribution<> dist(0, items.size() - 1);