Vector笔记
push_back()新增元素时,如果超过原有的容量,则容量(capacity())会扩充至两倍
insert()插入元素时,计算插入后长度,若插入后长度小于容量,则直接后移指针;若插入后大于容量,则将容量扩大为size()的两倍,若容量还是不足,就会扩大至足够大的容量。
(容量的扩张必经【重新配置、元素搬移、释放原空间】等过程)。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int i;
vector<int> iv(2, 9);
cout << "size=" << iv.size() << endl; //size=2
cout << "capacity=" << iv.capacity() << endl; //capacity=2
iv.push_back(1);
cout << "size=" << iv.size() << endl; //size=3
cout << "capacity=" << iv.capacity() << endl; //capacity=4
iv.push_back(2);
cout << "size=" << iv.size() << endl; //size=4
cout << "capacity=" << iv.capacity() << endl; //capacity=4
iv.push_back(3);
cout << "size=" << iv.size() << endl; //size=5
cout << "capacity=" << iv.capacity() << endl; //capacity=8
iv.push_back(4);
cout << "size=" << iv.size() << endl; //size=6
cout << "capacity=" << iv.capacity() << endl; //capacity=8
iv.push_back(5);
cout << "size=" << iv.size() << endl; //size=7
cout << "capacity=" << iv.capacity() << endl; //capacity=8
iv.pop_back();
cout << "size=" << iv.size() << endl; //size=6
cout << "capacity=" << iv.capacity() << endl; //capacity=8
vector<int>::iterator ite = find(iv.begin(), iv.end(), 1);
if (ite != iv.end()) iv.erase(ite);
cout << "size=" << iv.size() << endl; //size=5
cout << "capacity=" << iv.capacity() << endl; //capacity=8
ite = find(iv.begin(), iv.end(), 2);
if (ite != iv.end()) iv.insert(ite, 4, 7);
cout << "size=" << iv.size() << endl; //size=9
cout << "capacity=" << iv.capacity() << endl; //capacity=10
for (int i = 0; i < iv.size(); ++i)
cout << iv[i] << " "; //9 9 7 7 7 7 2 3 4
cout << endl;
//若此处为insert(itr, 6, 7),则size=11, capacity= 11
iv.clear();
cout << "size=" << iv.size() << endl; //size=0
cout << "capacity=" << iv.capacity() << endl; //capacity=10
return 0;
}