Vector是STL容器裡面最簡單的一個,但是在資料結構裡面也鮮少有提到,但是在STL裡面卻時常利用這個資料結構。在這裡擺上我今天學習Vector的一些重點,讓大家分享一下。
Vector是一個線性空間,但是為一個可以變動大小的線性空間,在宣告之後整個空間就像陣列(array)一樣為一個連續的線性空間,亦可以在上面進行類似Array的操作(比如說直接給值
a[i]=5 ; 或是直接顯示值 a[i]),而且Vector還可以隨意插入任何一個位置之中,並且使之後的元素均往後退一個(這個在array之中倒是需要實做上去加強的功能),並且最重要的是在Vector之中,他的位置是可以變動大小的。也就是若你一開始宣告的Vector大小為5,但是當你插入第6個元素的時候,整個Vector會自動變更大小到現在的兩倍(10個)。針對這個功能,所以Vector在使用上變的相當的方便,加上STL中泛型的設計概念使得Vector變得更強大,能解決的問題也就更多。整理Vector的特點如下:
int main()
{
int i;
vector iv(2,9);
cout «“iv[1]=”«iv[0];
cout «“iv[2]=”«iv[1]«endl;
cout «“size=”«iv.size()«endl;
cout «“capacity=”«iv.capacity()«endl;
cout «”—————————————–”«endl;
iv.push_back(1);
cout <<"iv[3]="<<iv[1]<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
cout <<"-----------------------------------------"<<endl;
iv.push_back(2);
cout <<"iv[4]="<<iv[1]<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
cout <<"-----------------------------------------"<<endl;
iv.push_back(3);
cout <<"iv[5]="<<iv[1]<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
cout <<"-----------------------------------------"<<endl;
iv.push_back(4);
cout <<"iv[6]="<<iv[1]<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
cout <<"-----------------------------------------"<<endl;
for (i=0;i<iv.size();++i)
cout <<iv[i]<<"--";
cout <<endl;
iv.push_back();
iv.push_back();
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
for (i=0;i<iv.size();++i)
cout <<iv[i]<<"--";
cout <<endl;
vector::iterator ivite= find(iv.begin(), iv.end(),1);
if (ivite) {iv.erase(ivite);}
cout <<"-----------------------------------------"<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
cout <<*ivite;
for (i=0;i<iv.size();++i)
cout <<iv[i]<<"--";
cout <<endl;
ivite= find(iv.begin(), iv.end(),2);
if (ivite) {iv.insert(ivite,3,7);}
cout <<"-----------------------------------------"<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
for (i=0;i<iv.size();++i)
cout <<iv[i]<<"--";
cout <<endl;
ivite= find(iv.begin(), iv.end(),7);
cout <<iv.begin()<<"**"<<endl;
cout <<ivite<<"==";
ivite= find(ivite, iv.end(),7);
cout <<ivite<<"==";
iv.clear2();
cout <<"-----------------------------------------"<<endl;
cout <<"size="<<iv.size()<<endl;
cout <<"capacity="<<iv.capacity()<<endl;
for (i=0;i<iv.size();++i)
cout <<iv[i]<<"--";
cout <<endl;