Хотел создать переменную типа map<string, vector<string>>, но чтобы пары в словаре хранились не по возрастанию, а в порядке добавления в словарь. Полагаю, для этого нужно при создании указать компаратор или написать свой. Только как это сделать для map я не нашел, а копаясь в коде map ничего не понял. Помогите, пожалуйста.
class BusStop
{
public:
BusStop()
{}
BusStop(BusStop & new_bus)
{
this->data = new_bus.data;
}
vector<string> & operator[] (string stop)
{
for (auto &i : data)
{
if (i.first == stop)
return i.second;
}
pair <string, vector <string>> d{ stop, {} };
data.push_back(d);
return data.back().second;
}
const vector<string> & at(string stop) const
{
for (auto &i : data)
{
if (i.first == stop)
return i.second;
}
throw runtime_error("element not found!");
}
int count(string stop) const
{
int count = 0;
for (auto &i : data)
{
if (i.first == stop) count++;
}
return count;
}
size_t size() const
{
return data.size();
}
auto begin() const
{
return data.begin();
}
auto end() const
{
return data.end();
}
vector<pair<string, vector<string>>> data;
};
В результате сделал вот такой класс. Для того чтобы итерироваться по объекту класса определили begin() end(). остальное переопределил как в map. Стало работать как и задумывалось.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости