使用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); // 瘦身成功
举例 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); // 瘦身成功
相关文章推荐
- effective stl 第17条: 使用“swap 技巧”除去多余的容量
- 【S17】使用“swap技巧”除去多余的容量
- 使用“swap技巧”除去多余的容量
- 使用“swap技巧”除去多余的容量
- 使用swap技巧除去多余的容量
- STL学习笔记之使用“交换技巧”来修整顺序容器的过剩容量
- Effective STL: 使用swap来修整过剩容量
- 利用swap技巧去除容器多余的容量
- STL 使用技巧
- STL的一些技巧函数使用
- STL 去除多余的容量
- swap的使用技巧
- C++ STL 中 map 容器的说明和使用技巧
- C++使用技巧:copy and swap idiom
- c++ stl multimap基本操作使用技巧详细介绍
- STL中swap的简单使用及总结
- C++ STL 中 map 容器的说明和使用技巧
- C++使用技巧:copy and swap idiom
- effective STL : 使用“交换技巧”来修整过剩容量
- 使用“交换技巧”来修整过剩容量