У меня есть std::map<std::pair<std::string, std::string>, float>
, который занимает слишком много памяти, и чтобы использовать меньше памяти, я решил отобразить уникальные строки в целые числа (например, std::map<std::string, int>
, где каждая новая уникальная строка отображаетсяк текущей size()
карты) и используйте эти целочисленные значения в качестве парных ключей карты (например, std::map<std::pair<int, int>, float>
).
Вместо int
я хочу использовать std :: map :: size_type :
using map_index = std::map::size_type;
std::pair<map_index, map_index> key;
Конечно, это не компилируется, потому что мне нужно предоставить список аргументов для карты:
vector.cc:14:19: error: invalid use of template-name `std::map' without an argument list
using map_index = std::map::size_type;
Иэто (теоретически) это то, чего я пытаюсь достичь:
using map_index = std::map<std::string, map_index>::size_type;
, которая дает следующую (ожидаемую) ошибку компилятора:
vector.cc:15:41: error: `map_index' was not declared in this scope
using map_index = std::map<std::string, map_index>::size_type;
Как правильно получитькомпилятор для вывода правильного value_type
для std::map
, для которого value_type
является его собственным size_type
?