STL源码解析之Vector

it2026-06-18  5

#include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int i; vector<int> iv(2, 9); // 容器大小为2,容器中的值全为9 cout << "size=" << iv.size() << endl; // 2 cout << "capacity=" << iv.capacity() << endl; // 2 iv.push_back(1); cout << "size=" << iv.size() << endl; // 3 cout << "capacity=" << iv.capacity() << endl; // 4 iv.push_back(2); cout << "size=" << iv.size() << endl; // 4 cout << "capacity=" << iv.capacity() << endl; // 4 iv.push_back(3); cout << "size=" << iv.size() << endl; // 5 cout << "capacity=" << iv.capacity() << endl; // 8 iv.push_back(4); cout << "size=" << iv.size() << endl; // 6 cout << "capacity=" << iv.capacity() << endl; // 8 for (i = 0; i < iv.size(); i++) { cout << iv[i] << ' '; } // 9 9 1 2 3 4 cout << endl; iv.push_back(5); cout << "size=" << iv.size() << endl; // 7 cout << "capacity=" << iv.capacity() << endl; // 8 for (i = 0; i < iv.size(); i++) { cout << iv[i] << ' '; } // 9 9 1 2 3 4 5 cout << endl; iv.pop_back(); iv.pop_back(); cout << "size=" << iv.size() << endl; // 5 cout << "capacity=" << iv.capacity() << endl; // 8 iv.pop_back(); cout << "size=" << iv.size() << endl; // 4 cout << "capacity=" << iv.capacity() << endl; // 8 vector<int>::iterator ivite = find(iv.begin(), iv.end(), 1); if(ivite!=iv.end()) iv.erase(ivite); cout<<"size="<<iv.size()<<endl; // 3 cout<<"capacity="<<iv.capacity()<<endl; // 8 for(i=0;i<iv.size();++i) cout<<iv[i]<<' '; // 9 9 2 cout<<endl; ivite = find(iv.begin(), iv.end(), 2); if(ivite != iv.end()) iv.insert(ivite, 3, 7); // 在2的位置之前插入3个7 cout<<"size="<<iv.size()<<endl; // 6 cout<<"capacity="<<iv.capacity()<<endl; // 8 for(i=0;i<iv.size();++i) { cout<<iv[i]<<' '; // 9 9 7 7 7 2 } cout<<endl; iv.clear(); // 清空 cout<<"size="<<iv.size()<<endl; cout<<"capacity="<<iv.capacity()<<endl; // 8 } // 可以看到容器的大小是以2的幂形式增长的,当size大小没有增长到容量大小是,容量大小不会自动增加 size=2 capacity=2 size=3 capacity=4 size=4 capacity=4 size=5 capacity=8 size=6 capacity=8 9 9 1 2 3 4 size=7 capacity=8 9 9 1 2 3 4 5 size=5 capacity=8 size=4 capacity=8 size=3 capacity=8 9 9 2 size=6 capacity=8 9 9 7 7 7 2 size=0 capacity=8

 

最新回复(0)