1)、vecto<t> v; //建立一個空的vector<t>對象,這個對象的元素的類型為t,t是需要指定的。
2)、vector<t> v(n); //建立一個vector<t>對象,v.size()為n, 每個元素的值都會是系統預設的值,如果t是類,就會是預設構造函數來初始化。
3)、vector<t> v(n, value);//跟第二個差不多,差別就是初始化不是預設值,而是用指定的value值來初始化這n個元素
4)、vector<t> v(iter1, iter2);//用疊代器來指定一個範圍内的元素來初始化。如:
vector<int> v;
for (int i = 1; i <= 10; i++)
v.push_back(i);
vector<int> v1(v.begin(), v.end());
v.push_back(value);//把value放到對象v的末尾
v.pop_back(); //把對象v的末尾的值删除,并縮減其容量
v.capacity();//傳回v的容量
v.max_size();//傳回v最大可以存放的元素的個數
v.size();//傳回v中元素的個數
v.empty();//如果v中元素個數為0,那麼就傳回true,否則傳回false
v.reserve(n, value);//設定v的容量為n,那麼原來如果為m, m < n, 則m-n這些元素都用value來初始化
v.front();//傳回v的第一個元素
v.back();//傳回v的最後一個元素
v1.swap(v2);//交換v1\v2的内容
v.clear();//清空所有元素,并将其容量變為0
v.begin();//傳回指向第一個元素的疊代器
v.end();//傳回指向最後一個元素之後的疊代器
v.rbegin();//傳回指向最後一個元素的疊代器
v.rend();//傳回指向第一個元素之前的疊代器
v.insert(iterator, value);//在疊代器iterator指向的元素之前插入value
v.insert(iterator, n, value);//在疊代器iterator指向的元素之前插入n個value
v.earse(iterator);//删除疊代器iterator指向的元素删除掉
v.earse(itebegin, iteend);//删除兩個疊代器指定的範圍内的元素
v[i] //像數組一樣來通路元素,但是不會進行越界檢查,跟數組一樣不檢查的
v.at(i);//傳回v中下标為i的元素。這個成員函數會起先越界檢查,如果越界會抛出out_of_range
如:
try
{
for (int i = 0; i <= v.size(); i++)
cout << v.at(i) << " ";
}
catch (out_of_range)
cout << "out of range" << endl;
}
//那麼這裡就是輸出out of range.
三、重載的運算符
1、 v1 = v2; //調用複制構造函數來完成指派
2、v1 == v2; //按字典順序來比較,如果相等,傳回true。下面的幾個也一樣的道理
3、v1 < v2;
4、v1 > v2;
5、v1 != v2
1、定義一個疊代器,有const的是用const限定的疊代器,不允許修改通過*來修改其值,
有reverse的是逆序疊代器
vector<int>::iterator it = v.begin(); //
vector<int>::const_iterator cit = v.begin();
vector<int>::reverse_iterator rit = v.rbegin();
vector<int>::const_reverse_iterator crit = v.rbegin();
這樣定義以後可以執行以下操作:
++it 、--it、*it、=、 == 、 !=、+、-、【】
順序輸出元素:
for (vector<int>::const_iterator cit = v.begin(); cit != v.end(); cit++)
cout << *cit << " ";
cout << endl;
逆序輸出元素:
for (vector<int>::const_reverse_iterator crit = v.rbegin(); crit != v.rend(); crit ++)
cout << *crit << " ";
1)、const int rows = 3, columns = 4;
vecotor< vecotr<double> > table(rows, vector<double> (columns, 0.0));
//建立了一個3*4的矩陣,其中的vector<double> (columns, 0.0);是建立一個臨時對象,其元素個數為columns, 每個元素值為0.0;
2)、單下标通路
table[0];//這是第一行
3)、雙下标
table[0][0];//table 表中的第一行第一列對象的元素
4、size()方法
table.size();//傳回的是行數
table[r].size();//傳回的是列數
5、周遊二維表
for (int row = 0; row < table.size(); row++)
for (int col = 0; col < table[row].size(); col++)
cout << table[row][col] << " ";
6、使用push_back()成員函限乘
加入一行:table.push_back(vector<double> (columns, 0.0));
在每行末尾直接加一個元素:
table[row].push_back(0.0);
建立不規則二維表
vecotor< vecotor<double> > table;
for (int col = 1; col <= 3; col++)
table.push_back(vector<double> (col, 0.0));
結果如圖:
0.0
0.0 0.0
0.0 0.0 0.0
1、vector<int> v;
for (int i = 0; i < 10; i++)
v[i] = i;
//知道錯在哪裡了嗎?因為v是一個空的對象,它的容量大小為0,這是不允許使用下标來指派的。
//解決辦法有兩種:
第一種:使用push_back()成員函數,這個函數會自動擴充其容量以适應新的元素
第二種:使用reserve()成員函數來預留容量。
2、在使用疊代器的時候一定要注意,每次使用之後會有可能改變了指向,是以一定要注意,
最好在每次使用的都重新讓他指向你需要的地方。