众所周知,swap()可以释放向量的内存,而shrink_to_fit()也可以做到这一点。是对的吗?
vector<int> nums;
nums.push_back(1);
nums.push_back(1);
nums.push_back(2);
nums.push_back(2);
vector<int>().swap(nums);
vector<int>().shrink_to_fit();发布于 2021-02-01 16:49:22
向量向量().swap(
);
这实际上等同于(尽管不能保证如此)
nums.clear();
nums.shrink_to_fit();我推荐写后者,因为它读起来更清晰。交换技巧是在引入shrink_to_fit之前使用的。
交换()可以释放向量的内存,
交换本身不会释放内存。它是释放内存的临时对象的析构函数。
向量向量().shrink_to_fit(
);
这是不恰当的。
向量().shrink_to_fit();
这只修改了一个临时对象,没有其他副作用,所以这实际上等同于一个空语句,假设它被优化出来了。
https://stackoverflow.com/questions/65989466
复制相似问题