vector容器的自增長分析

vector是用數組做的,因此具備數組的優(具有下標,操作很快)缺(一旦數組大小定義好了就不允許再改變)點。當vector容器中加入新的元素時,若容器容量不夠,則創建新的更大容量的數組,再將原數組中的元素copy進來;

#include<iostream>
#include<vector>

int main()
{
	std::vector<int> v;
	int i = 0;
	while (i++ < 30)
	{
		v.push_back(i);
		std::cout << "容器大小:" << v.size() << "; 容器容量:" << v.capacity() << std::endl;
	}
	// 操作環境:window10,visual studio 2017, Debug, x86
	/*輸出結果:(分析,先給容器分配一定容量,當容量不夠時,創建新的數組,將原數組中的元素copy進來,因此擴大容量過程比較耗時(copy數據操作),其容量自動增長50%(爲了避免頻繁地擴大容量,增長%多少和開發環境有關))
	容器大小:1容器容量:1
	容器大小:2容器容量:2
	容器大小:3容器容量:3
	容器大小:4容器容量:4
	容器大小:5容器容量:6
	容器大小:6容器容量:6
	容器大小:7容器容量:9
	容器大小:8容器容量:9
	容器大小:9容器容量:9
	容器大小:10容器容量:13
	容器大小:11容器容量:13
	容器大小:12容器容量:13
	容器大小:13容器容量:13
	容器大小:14容器容量:19
	容器大小:15容器容量:19
	容器大小:16容器容量:19
	容器大小:17容器容量:19
	容器大小:18容器容量:19
	容器大小:19容器容量:19
	容器大小:20容器容量:28
	容器大小:21容器容量:28
	容器大小:22容器容量:28
	容器大小:23容器容量:28
	容器大小:24容器容量:28
	容器大小:25容器容量:28
	容器大小:26容器容量:28
	容器大小:27容器容量:28
	容器大小:28容器容量:28
	容器大小:29容器容量:42
	容器大小:30容器容量:42
	*/
	v.reserve(100); // 將容器容量直接設置到100
	std::cout << "after reserve,容器大小:" << v.size() << "; 容器容量:" << v.capacity() << std::endl;
	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章