Лучший подход для системы истории команд

Хорошо, я не был уверен, как объяснить свой вопрос в заголовке, но в основном я пытаюсь добиться интерфейса с интерфейсом командной строки, использующего Allegro. Графика работает нормально, но метод сохранения истории не работает по очевидным причинам. Я использую карту для хранения значений, которые были действительно глупы с моей стороны. Каждый раз, когда я добавляю в историю команду, которая была такой же, как и предыдущая, предыдущая исчезает. Я хочу знать, есть ли способ сохранить значения таким образом, чтобы они не были перезаписаны, как они есть на карте?

Вот мой текущий метод

У меня есть структура под названием Point

struct Point {
float x, y;

Point() { this->x = 10.0; this->y = 440.0; }
Point(float x, float y): x(x), y(y) { };
};

Я использую это для хранения точек, где будет отображаться текст, который используется частью обработки моей графики.

Это мой класс HistoryManager, определенный в HistoryManager.h

class HistoryManager {

public:
HistoryManager();
~HistoryManager();
bool firstEntry;
map<string, Point> history;

void add_to_history(string);

private:
void update();
};

И вот определения в HistoryManager.cpp

HistoryManager::HistoryManager() { this->firstEntry = false; }

HistoryManager::~HistoryManager() { }

void HistoryManager::add_to_history(string input) {

if (!this->firstEntry) {
this->history[input] = Point(10.0, 440.0);
this->firstEntry = true;
} else {
this->update();
this->history[input] = Point(10.0, 440.0);
}
}

void HistoryManager::update() {

for (map<string, Point>::iterator i = this->history.begin(); i != this->history.end(); i++) {
this->history[(*i).first] = Point((*i).second.x, (*i).second.y-10.0);
}
}

Я предполагаю, что векторы это вариант, но есть ли способ соединить значения вместе?

0

Решение

использование std::pair

std::vector< std::pair <std::string, Point> > >

Или просто объявите свою собственную структуру

struct HistoryEntry
{
std::string input;
Point point;
};

std::vector<HistoryEntry>
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector