您的位置:首页 > 其它

使用swap技巧除去多余的容量 STL 第17条

2011-11-24 20:19 295 查看
我们知道Vector容器删除元素的时候,容器的内存大小并不会减少,但是怎么给容器瘦身呢。这里我们可以使用swap技巧。

举例 int main(int argc,char* argv[])

{

vector<int> vectorIntColl;

vector<int>::iterator itor = vectorIntColl.begin();

for (int i = 0; i< 10; ++i)

{

vectorIntColl.push_back(i);

}

cout << vectorIntColl.capacity(); // 16

for (itor = vectorIntColl.begin(); itor != vectorIntColl.end(); )

{

itor= vectorIntColl.erase(itor);

}

cout << "删除之后的大小是" <<endl;

cout << vectorIntColl.capacity(); // 还是 16



cout << "瘦身之后的capcity是" <<endl;

vector<int>(vectorIntColl).swap(vectorIntColl);

cout<< vectorIntColl.capacity(); // 0

return 0;

}

已经瘦身。

类似string也可以用swap来瘦身

string s;

string(s).swap(s); // 瘦身成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: