目錄
- 前言
- 1.vector進階
- 2.vector的建構式
- 3.給vector容器進行賦值
- 4.對vector容器的容量和大小操作
- 5.對vector中的資料的存取操作
- 6.利用函式swap()實作兩個容器進行元素互換
前言
我們之前講了有關vector容器的概述有關資料型別的創建處理,提到了汗多vector的成員函式,
接下來我們通過實體來掌握vector容器有關的成員函式,如果對vector本身理解還有問題的,先學習上一篇內容,
首先學習: 一篇文章幫你玩轉vector容器(C++).《===
1.vector進階
(1)vector資料結構和陣列非常相似,也稱為單端陣列
(2)vector與普通陣列的區別在于陣列是靜態空間,而vector可以動態擴展
(3)動態擴展:并不是在原空間之后續接原空間,而是找更大的記憶體空間,然后將原資料拷貝新空間,釋放原空間
(4)vector的迭代器是支持隨機訪問的迭代器
2.vector的建構式
用到了v.begin()/v.end()等成員函式
#include<iostream>
#include<vector>
using namespace std;
//列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<(*it)<<" ";
}
cout<<endl;
}
//vector的建構式
void test01()
{
//1.vector容器的默認構造
vector<int>v1;
for(int i=0;i<50;i+=5)
v1.push_back(i);
my_print(v1);
//2.通過區間的方式進行構造.
vector<int>v2(v1.begin(),v1.end());
my_print(v2);
//3.n個elem進行構造
vector<int>v3(10,66);
my_print(v3);
//4.拷貝構造
vector<int>v4(v3);
my_print(v4);
}
int main()
{
test01();
}
運行結果

3.給vector容器進行賦值
用到了assign()/push_back()等函式
#include<iostream>
#include<vector>
using namespace std;
//列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<(*it)<<" ";
}
cout<<endl;
}
//給vector容器進行賦值
void test01()
{
vector<int>v1;
for(int i=0;i<50;i+=5)
v1.push_back(i);
my_print(v1);
//1.=賦值
vector<int>v2;
v2=v1;
my_print(v2);
//2.assign賦值
vector<int>v3;
v3.assign(v1.begin(),v1.end());
my_print(v3);
//3.assign(n個elem賦值)
vector<int>v4;
v4.assign(10,66);
my_print(v4);
}
int main()
{
test01();
}
運行結果

4.對vector容器的容量和大小操作
使用了函式empty(),size(),capacity()等
#include<iostream>
#include<vector>
using namespace std;
//列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<(*it)<<" ";
}
cout<<endl;
}
//對vector容器的容量和大小操作
void test01()
{
vector<int>v1;
for(int i=0;i<50;i+=5)
v1.push_back(i);
my_print(v1);
//判斷容器是否為空
if(v1.empty())
{
cout<<"v1為空"<<endl;
}
else
{
cout<<"v1不為空"<<endl;
cout<<"v1的大小為:"<<v1.size()<<endl;
cout<<"v1的容量:"<<v1.capacity()<<endl;
}
//重新指定v1的大小
v1.resize(13);
my_print(v1); //如果重新指定的v1比原來的長,用0補上
}
int main()
{
test01();
}
運行結果

5.對vector中的資料的存取操作
#include<iostream>
#include<vector>
using namespace std;
//列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<(*it)<<" ";
}
cout<<endl;
}
//對vector中的資料的存取操作
void test01()
{
vector<int>v1;
for(int i=0;i<50;i+=5)
v1.push_back(i);//尾插法
my_print(v1);
// 利用成員函式at方式訪問元素
for(int i=0;i<v1.size();i++)
{
cout<<v1.at(i)<<" ";
}
cout<<endl;
//獲取它的第一個元素
cout<<"第一個元素為:"<<v1.front()<<endl;
// 獲取它的最后一個元素
cout<<"最后一個元素為:"<<v1.back()<<endl;
}
int main()
{
test01();
}
運行結果

6.利用函式swap()實作兩個容器進行元素互換
#include<iostream>
#include<vector>
using namespace std;
//列印vector容器
void my_print(vector<int>&v)
{
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<(*it)<<" ";
}
cout<<endl;
}
//利用函式swap()實作兩個容器進行元素互換
void test01()
{
vector<int>v1;
for(int i=0;i<50;i+=5)
v1.push_back(i);
my_print(v1);
vector<int>v2;
for(int i=45;i>=0;i-=5)
v2.push_back(i);
my_print(v2);
cout<<"交換后;"<<endl;
v1.swap(v2);
my_print(v1);
my_print(v2);
}
int main()
{
test01();
}
運行結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/356871.html
標籤:其他
