unordered

This commit is contained in:
David Markowitz 2023-07-25 22:28:24 -07:00
parent 4a189edf43
commit 6f2d583ca2
2 changed files with 5 additions and 18 deletions

View File

@ -1,19 +1,8 @@
#include "CDRebuildComponentTable.h"
void CDRebuildComponentTable::LoadValuesFromDatabase() {
// First, get the size of the table
unsigned int size = 0;
auto tableSize = CDClientDatabase::ExecuteQuery("SELECT COUNT(*) FROM RebuildComponent");
while (!tableSize.eof()) {
size = tableSize.getIntField(0, 0);
tableSize.nextRow();
}
this->entries.reserve(size);
// Now get the data
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent order by id");
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent");
while (!tableData.eof()) {
CDRebuildComponent entry;
uint32_t id = tableData.getIntField("id", -1);
@ -27,14 +16,12 @@ void CDRebuildComponentTable::LoadValuesFromDatabase() {
entry.post_imagination_cost = tableData.getIntField("post_imagination_cost", -1);
entry.time_before_smash = tableData.getFloatField("time_before_smash", -1.0f);
this->entries.push_back(std::make_pair(id, entry));
this->entries.insert_or_assign(id, entry);
tableData.nextRow();
}
}
const std::optional<CDRebuildComponent> CDRebuildComponentTable::Get(uint32_t componentId) {
auto result = std::lower_bound(this->entries.begin(), this->entries.end(), componentId, [](const auto& entry, const auto& componentId) {
return entry.first < componentId;
});
return result == this->entries.end() ? std::nullopt : std::make_optional(result->second);
auto it = this->entries.find(componentId);
return it != this->entries.end() ? std::make_optional(it->second) : std::nullopt;
}

View File

@ -17,7 +17,7 @@ struct CDRebuildComponent {
class CDRebuildComponentTable : public CDTable<CDRebuildComponentTable> {
private:
std::vector<std::pair<uint32_t, CDRebuildComponent>> entries;
std::unordered_map<uint32_t, CDRebuildComponent> entries;
public:
void LoadValuesFromDatabase();