1. 程式人生 > >Effective_STL 學習筆記(十七) 使用 “交換技巧” 來修整過剩的容量

Effective_STL 學習筆記(十七) 使用 “交換技巧” 來修整過剩的容量

 

避免 vector 持有它不再需要的記憶體,你需要把它從曾經最大的容量減少到它現在需要的容量。這樣的減少容量的方法常被稱為“收縮到合適”。可以這樣做:

1   vector<Contestant>( contestants ).swap( contestants );

vector 的複製建構函式拷貝資料到臨時vector,這個臨時vector沒有多餘的容量,交換後,銷燬

同樣技巧用於 string:

1   string(s).swap(s);  // 在s上進行 “收縮到合適”

收縮到合適意味著:使容量和這個實現可以儘量給容器的當前大小一樣小

 

另外,交換技巧的變體可以用於清除容器和減小它的容器到你的實現提供的最小值:

1   vector<Contestant> v;
2   string s;
3   .  .  .
4   vector<Contestant>().swap(v);  // 清除 v 而且最小化它的容量
5   string().swap(s);      // 清除 s 而且最小化它的容量