vector是cpp中面向對象形式的動態數組,它不同於傳統數組,vector可以很方便的在數組的任意位置插入任意的數,並且使數組的大小隨之動態地發生改變。
1.vector<int> vec = { }; //初始化一個vector,vec爲數組名,vec[index]可以直接訪問數組中的任意元素
2.vec.push_back(____); //在數組的最後插入一個新的元素
vec.pop_back(); //刪去數組中的最後一個元素
3.vec.insert(____,____) //在數組中的某一個位置處插入一個新的元素
vec.erase(_____); //在數組中的某一個位置處刪除一個元素
4.vec.end() //數組中最後一個元素的後一個值
vec.begin() //數組中的第一個元素
vec.capacity() //數組總的容量
vec.size() //數組當前元素的個數
#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec = { 1,2,3,4 };
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
//在末尾插入一個數字50,並觀察其size與capacity的變化:
vec.push_back(50);
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
/* 從結果中我們可以看出,在插入了一個數字之後,capacity的值增加了2,即從4變爲了6,而size的值
增加了1從而變爲了5。 */
//用第二種方式在末尾插入一個數字60,並觀察其size與capacity的變換:
vec.insert(vec.end(), 60);
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
/* 從結果中我們可以看出,再次插入一個值後,由於現在數的總量沒有超過之前capacity的值,故capcity
的值並沒有增加,而size的值由於又有數值插入故加1 */
//在開頭插入一個數字70,並觀察其size與capacity的變化:
vec.insert(vec.begin(), 70);
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
/* 從結果中我們可以看出,在數組的開頭插入一個70之後,現在數的總量又超過了之前capacity的值,故
capacity的值擴充爲9,而size的值繼續加1 */
//在尾部移除一個數值:
vec.pop_back();
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
//在尾部移除一個數值的另外一種方法:
vec.erase(--vec.end());
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
//在頭部移除一個數值:
vec.erase(vec.begin());
cout << "Size is: " << vec.size() << endl;
cout << "Capacity is: " << vec.capacity() << endl;
for (unsigned int index = 0; index < vec.size(); ++index)
{
cout << vec[index] << endl;
}
/* 從結果中我們可以看出來,在移除數值時,capacity的值不會再改變,即計算機給我們之前分配過的空
間並不會被自動釋放掉。此外,vec.end()所指向的數值應是數組最後一位數的後一位,而vec.begin()所
指向的數值應是數組第一位數,故當我們要刪除最後一位數時,刪除的對象應爲vec.end()-1。*/
}
程序運行結果: