Вы можете использовать
map<int,int>& myMap = *new map<int,int>();
, но я не рекомендую это.
Динамически распределенная память должна быть освобождена.В то же время вам нужно будет использовать что-то вроде
delete &myMap;
Это код низкого качества, ИМО.
Используйте умный указатель , если вам нужнодинамически распределяемая память.
std::shared_ptr<map<int,int>> ptr = new map<int,int>();
Если вам нужно использовать ссылку, вы можете использовать:
map<int,int>& myMap = *ptr;
Будет лучше, если вы вообще сможете избежать динамически распределяемого объекта и использовать автоматический объект(объект в памяти стека).
map<int,int> myMap;
Обновление в ответ на комментарий ОП
В комментарии вы сказали
Да, я хочусохраняйте эту ссылку, потому что я передаю ее рекурсивной функции
C ++ способ справиться с этим - передать объект по ссылке.
void recursive_foo(std::map<int, int>& myMap)
{
}
void foo_user()
{
std::map<int, int> myMap;
// Fill up myMap
// ...
recursive_foo(myMap);
}
Если рекурсивная функция неизменив объект, вы можете следовать идиоме, используемой стандартной библиотекой, и использовать вместо этого итераторы.
void recursive_foo(std::map<int, int>::iterator start,
std::map<int, int>::iterator end)
{
}
void foo_user()
{
std::map<int, int> myMap;
// Fill up myMap
// ...
recursive_foo(myMap.begin(), myMap.end());
}