默认情况下,程序运行良好,但我应该在 main() 中显式调用 h.clear(),还是在声明全局映射变量的情况下始终调用 clear()?
map <int , long long> h;
long long f(int n)
{
.
.
.
}
int main()
{
long long int t,n,x;
//Should I explicitly invoke h.clear() here?
}
clear()
不是要求你,但没有必要。析构函数将负责清理并在内部释放地图使用的内存。
如果您期望在退出时将被破坏的其他全局对象main
取决于地图为空的事实,您应该只清除地图(这看起来是个坏主意,但谁知道......)
如果您的代码真的只是这样,那么地图将为空。
在更奇特的情况下,它可能是非空的,例如
map <int , long long> h;
int fetchSomeVar()
{
h[ 0 ] = 0;
return 0;
}
int someVar = fetchSomeVar();
int main()
{
//...
}
其中 fetchSomeVar 将在 main 之前被调用并且碰巧修改了地图,但是应该避免这样的构造。
地图将被破坏,但要等到 main 完成后。如果其他全局变量的析构函数(应该在同一个翻译单元中)引用,是否clear()
在末尾调用main
只会影响您的程序。h