我注意到当我使用无序集时 unordered_set<int> theSet;
为了保存大量整数,即使调用 clear() 或 rehash(0),它也不会释放内存。即使我在函数中本地定义了集合,并且函数完成执行,集合保留的大部分内存仍然保留。有什么想法吗?
下面是一个示例代码,当测试函数返回并且我们在 main 中时,内存 测试人员使用的未释放
谢谢
using namespace std;
using std::tr1::unordered_set;
void tester() {
mySet.rehash(x);
for (int i = 0; i < 10000000; i++)
mySet.insert(i);
mySet.clear();
}
int main() {
tester();
return 0;
}
最佳答案
您可以 swap
有一个临时集。
std::unordered_set<MyType> mySet;
// do stuff with mySet
std::unordered_set<MyType>().swap( mySet );
但是你的第二个说法没有任何意义。如果您声明了一个函数的局部集合,则该集合使用的所有内存都将在函数退出时释放。
关于c++ - unordered_set C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13611800/