c++ - unordered_set C++

标签 c++ memory unordered-set

我注意到当我使用无序集时 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/

相关文章:

c - 我在 c 中的 realloc() 做错了什么?

memory - 四端口内存来自单端口内存还是双端口内存?

c++ - 通过 unordered_set 重复迭代是否会产生一致的结果?

c++ - unordered_map/unordered_set 中元组的通用哈希

c++ - int(int, int) 样式模板函数类型语法

c - C中位域的内存管理

c++ - 内置类型的析构函数(int、char 等)

c++ - 高效计算两个 vector 公共(public)元素的索引

c++ - 在整个应用程序中重用接口(interface)

c++ - 是否可以将任何原始类型传递给需要指针的函数?