在这种情况下如何使用智能指针

how to use smart pointers in this case

有没有更好的方法使用现代 C++ 和智能指针编写此代码?我想通过显式调用 new 和 delete 来避免处理可怕的指向指针类型语法的指针和手动内存管理。

#include <map>

void GetData(std::map<int, int>** data);

int main()
{
    std::map<int, int>* data = nullptr;
    GetData(&data);

    delete data;
    return 0;
}


void GetData(std::map<int, int>** data)
{
    *data = new std::map<int, int>
    {
        {1,1},
        {2,1}
    };

}

绝对有更好的写法,你根本不需要指针!

#include <map>
#include <iostream> // just for printing using std::cout

auto GetData()
{
    return std::map<int, int>
    {
        {1,1},
        {2,1}
    };    
}

int main()
{
    const auto data = GetData();
    for (auto d : data)
    {
        std::cout << d.first << ", " << d.second << "\n";
    }
}

不再有丑陋的指针语法,不再需要手动分配和释放内存,您无需担心任何事情。