ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ### what ***** 如果你的vector有时候容纳了10万个的可能的候选人,它的容量会继 续保持在至少100,000,即使后来它只容纳10个。 一个相对少数符合条件的候选人移到vector前端(可能通过partial\_sort或partition——参见条款 31),如果不是候选人的就从vector删除(典型的通过调用erase的区间形式——参见条款5)。这很好地减少 了vector的大小,**但没有减少它的容量。** ### how ***** 竞争者的类 ``` class Contestant {...}; vector<contestants>; ``` 避免你的vector持有它不再需要的内存,你需要有一种方法来把它从曾经最大的容量减少到它现在需要的 容量。这样减少容量的方法常常被称为“收缩到合适(shrink to fit)” 这是你怎么修整你的竞争者vector过剩容量的方法: ``` vector(contestants).swap(contestants); ``` 同样的技巧可以应用于string: ``` string s; //使s变大,然后删除所有 string<s>.swap(s); ``` ` ` ### **交换技巧的变体可以用于清除容器和减少它的容量到你的实现提供的最小值** ***** 交换技巧的变体可以用于清除容器和减少它的容量到你的实现提供的最小值。你可以简单地和一个默 认构造的临时vector或string做个交换: ``` vector v; string s; ... // 使用v和s vector().swap(v); // 清除v而且最小化它的容量 string().swap(s); // 清除s而且最小化它的容量 ```