Хотел создать переменную типа 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. Стало работать как и задумывалось.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ребят, помогите разобратьсяПытаюсь составить систему уравнений, чтобы можно было решить методом Гаусса
Написал приложение и скомпилировал егоПопытался запустить из QtCreator все нормально
Задача состоит в получении содержимого элемента ListView другого окнаОднако, данный код приводит к критическому завершению работы процесса...
Учу классы и решил реализовать старую программу через классыНо возникла ошибка и не могу разобраться в чем дело