Здравствуйте! У меня возникла следующая проблема, не могу подобрать контейнер для хранения переменных и их значений. К слову, map подходил почти идеально, но он сортирует элементы, что для меня совершенно не подходит. Я пишу парсер математических выражений и использую поиск по имени переменной, чтобы получить ее значение. Было бы идеально, если бы существовал контейнер наподобие map который не сортируется автоматически (то есть контейнер по типу ключ->значение, но без автоматической сортировки). Я уже себе всю голову поломал, и на ум приходят только костыли. Какие могут быть решения?
unordered_map
больше подойдет, как уже заметил пользовательHarry
Для хранения имен переменных и их значений использование map
не совсем логично, поскольку вам не нужно сортировать имена переменных по лексикографическому порядку. Какая переменная появляется раньше другой, не должен зависить от того, какое имя она имеет.
Если вам нужен какой то порядок, то нужно брать другой контейнер, поскольку поиск в unordered_map
осуществляется по возвращенному значению хэш функции, а в данном контейнере, для каждого ключа это значение уникально, и проверяется ключ
только на равенство.
Для определенного порядка, вы можете брать любой контейнер с типом элементов std::pair<std::string, double >
.
Для примера:
using P = std::pair<std::string, double >;
std::vector<P> vp;
vp.emplace_back(make_pair("s", 1));
vp.emplace_back(make_pair("d", 2.1));
vp.emplace_back(make_pair("f", 3.2));
vp.emplace_back(make_pair("g", 5.6));
for (auto& p : vp)
cout << p.first <<'\t' << p.second <<'\n';
Вы можете использовать любой из данных
cout << vp[1].first <<'\t' << vp[1].second;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Проект построен на Vue компонентахВ каждом компоненте есть свои методы и т
Необходимо добавить таймер в так, чтобы он начинал работать при нажатии на первую карточку и заканчивал работать, если игрок выиграл или...