vector能容納絕大多數類型的對象作為其元素,但是因為引用不是對象,所以不存在包含引用的vector。
使用vector需要包含頭文件vector。
1、初始化vector對象的方法
1)vector<T> v1; // v1是一個空vector,它潛在的元素是T類型的,執行默認初始化。
2)vector<T> v2(v1); // v2中包含有v1所有元素的副本。
3)vector<T> v2 = v1; // 等價於v2(v1)
4)vector<T> v3(n, val); // v3包含了n個重復的元素val
5)vector<T> v4(n); // v4包含了n個重復地執行了值初始化的對象。如果vector對象的元素是元素內置類型,比如int,則元素初始值自動設為0;如果元素是某種類類型,比如string,則元素由類默認初始化。
6)vector<T> v5{a,b,c,...} // v5包含了初始值個數的元素,每個元素被賦予相應的初始值
7)vector<T> v5={a,b,c,...} // 等價於v5{a,b,c,...}
注意:如果用的是花括號,可以表述成我們想列表初始化該vector對象。初始化過程會盡可能地把花括號內的值當成元素初始值的列表來處理,只有在無法執行列表初始化時才會考慮其他初始化方式。
1 int main() 2 { 3 vector<int> v1(10); // 10個值為0的元素 4 vector<int> v2{ 10 }; // 一個值為10的元素 5 vector<int> v3(10, 1); // 10個值為1的元素 6 vector<int> v4{ 10, 1 }; // 2個元素,分別是10,1 7 vector<string> v5{ 10 }; // 10個默認初始的元素 8 vector<string> v6{ 10, "hello" }; // 10個值為"hello"的元素 9 return 0; 10 }
允許使用數組來初始化vector對象,需要指明拷貝區域的首元素地址和尾后地址。
1 int main() 2 { 3 int arr[5] = { 1, 2, 3, 4, 5 }; 4 std::vector<int> vec(arr+1, arr+4); // vec有3個元素,分別是2,3,4 5 return 0; 6 }
2、常用操作
1)v.empty() 如果v不含有任何元素,返回真;否則返回假。
2)v.size() 返回v中元素的個數。
3)v.push_back(t) 向v的尾端添加一個值為t的元素。
4)v[n] 返回v中第n個位置上元素的引用。
5)v1 = v2 用v2中元素的拷貝替換v1中的元素。
6)v1={a,b,c,...} 用列表中元素的拷貝替換v1中的元素。
7)v1 == v2 v1和v2相等當且僅當它們的元素數量相同且對應位置的元素值都相同。
8)v1 !=v2
9)<,<=,>,>= 以字典序順序進行比較
注意:vector對象(以及string對象)的下標運算符可用於訪問已存在的元素,而不能用於添加元素。