STL vector中的shrink_to_fit方法(32)
std::vector::shrink_to_fit
void shrink_to_fit();
請求容器降低其容量和size匹配。
該請求不具有約束力,容器可以自由地去執行其他的優化方案(capacity可以大於size)。//我查了一下網上說是該方法由編譯器決定是否真正釋放多餘的記憶體,該方法值是提出請求,是否要實現由編譯器說了算。
例子:
// vector::shrink_to_fit
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
std::vector<int> myvector (100);
std::cout << "1. capacity of myvector: " << myvector.capacity() << '\n';
cout<<"size="<<myvector.size()<<endl;
myvector.resize(10);
std::cout << "2. capacity of myvector: " << myvector.capacity() << '\n';
cout<<"size="<<myvector.size()<<endl;
myvector.shrink_to_fit();
std::cout << "3. capacity of myvector: " << myvector.capacity() << '\n';
cout<<"size="<<myvector.size()<<endl;
return 0;
}
結果截圖:
This may cause a reallocation, but has no effect on the vector size and cannot alter its elements.
這可能導致重分配,但不會影響其size以及不能改變其元素。
Parameters
noneReturn value
noneExample
|
|
Possible output:
1. capacity of myvector: 100
2. capacity of myvector: 100
3. capacity of myvector: 10
|
Complexity
At most, linear in container size.與容器大小線性相關。
Iterator validity
If a reallocation happens, all iterators, pointers and references related to the container are invalidated.
如果發生重分配,所有的迭代器,指標以及引用都將失效。
否則,不會改變其有效性。
Data races
The container is modified.
容器將被修改。
如果發生重分配,所有容器內元素都將被修改。
Otherwise, no contained elements are accessed.
否則,元素不會被訪問。
Exception safety
If the type of the elements is either copyable or no-throw moveable, there are no changes in the container in case of exception (strong guarantee).
如果元素的複製構造以及移動構造不會丟擲異常,那麼容器丟擲異常的規則不變。
Otherwise, if an exception is thrown, the container is left with a valid state (basic guarantee).
否則,如果容器丟擲異常,容器依舊承諾保持在有效狀態。
//翻譯的不好的地方請多多指導,可以在下面留言或者點選左上方郵件地址給我發郵件,指出我的錯誤以及不足,以便我修改,更好的分享給大家,謝謝。
轉載請註明出處:http://blog.csdn.net/qq844352155
2014-8-19
於GDUT
相關文章
- vector::shrink_to_fit()
- vector shrink_to_fit
- STL——STL中vector的實現原理
- C++ STL -- vectorC++
- 《STL原始碼剖析》-- stl_vector.h原始碼
- 初探STL容器之Vector
- STL:vector用法總結
- STL Vector remove()和erase()的使用REM
- UVA 11991 STL中map、vector的應用
- STL原始碼剖析——vector容器原始碼
- C++ STL學習——vectorC++
- STL 之 vector 容器詳解
- C++_STL—容器Vector篇C++
- GUN C++ STL中的vector的記憶體分配器C++記憶體
- 精通標準模板庫STL的向量Vector用法
- stl 中list 或者vector正確使用find查詢類物件物件
- STL vector的內部實現原理及基本用法
- C++STL第二篇(vector的原理用法)C++
- 例說資料結構&STL(一)——vector資料結構
- C++ 學習筆記(1):STL、Vector 與 SetC++筆記
- Android中的VectorAndroid
- STL.vector容器刪除單個元素、部分元素、全部元素
- Effective STL:Item 16: Know how to pass vector and string data to (轉)
- C++ vector容器的swap方法C++
- C++ shrink_to_fit()的實現C++
- STL——STL中string的寫時拷貝機制
- WPF中嵌入普通Win32程式的方法Win32
- STL序列式容器中刪除元素的方法和陷阱 一 (轉)
- STL容器的各個函式方法函式
- 進階篇_STL中的容器
- VC++中STL的使用 (轉)C++
- STL關聯式容器中刪除元素的方法和陷阱 四 (轉)
- C++中vector*和vector有什麼區別C++
- Rust中如何排序Vector?Rust排序
- 訪問vector元素方法的效率比較
- 演算法學習之路|用C++刷演算法會用到的STL(一)——vector演算法C++
- Java中Vector和ArrayList的區別Java
- 【譯】Rust中的array、vector和sliceRust