vector容器

參考html


CSDN  頑強的土豆地雷
https://blog.csdn.net/fuxingdecsdn/article/details/80411649 ios

CSDN  kinghero123456數組

https://blog.csdn.net/u014378771/article/details/90295900函數

菜鳥教程spa

https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html.net

頭文件指針

#include<vector>

定義code

//第一種:不傳參數
vector<int> vint;
vector<char> vchar;
vector<string> vstring;

//第二種:傳一個參數 至關於開闢了一個數組
vector<int> vint2(5);
vector<char> vchar2(5);
vector<string> vstring2(5);

//第三種:參數一 n個元素,每一個元素的初值 開闢數組並進行初始化
vector<int> vint3(5,0);
vector<char> vchar3(5,'a');
vector<string> vstring3(5,"a");

//第四種:傳一段迭代器區間
vector<int> vint4(vint3.begin(),vint3.end());
vector<char> vchar4(vchar3.begin(),vchar3.end());                      
vector<string> vstring4(vstring3.begin(),vstring3.end());

//第五種:傳一個對象,既拷貝函數
vector<int> vint5(vint3);
vector<char> vchar5(vchar3);
vector<string> vstring5(vstring3);

//第六種:賦值運算符的重載
vector<int> vint6;
vector<char> vchar6;
vector<string> vstring6;
vint6=vint5;
vchar6=vchar5;
vstring6=vstring5;

在容器最後插入和刪除元素htm

.push_back()對象

.pop_back()

#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int>obj;//建立一個向量存儲容器 int
    for(int i=0;i<10;i++) // push_back(elem)在數組最後添加數據 
    {
        obj.push_back(i);
        cout<<obj[i]<<",";    
    }
 
    for(int i=0;i<5;i++)//去掉數組最後一個數據 
    {
        obj.pop_back();
    }
 
    cout<<"\n"<<endl;
 
    for(int i=0;i<obj.size();i++)//size()容器中實際數據個數 
    {
        cout<<obj[i]<<",";
    }
 
    return 0;
}

運行結果

0,1,2,3,4,5,6,7,8,9,

0,1,2,3,4,

刪除指定元素

.erase()

#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;
 
int main()
{
 
    vector<int> NumberArray;
    NumberArray.push_back(1);
    NumberArray.push_back(1);
    NumberArray.push_back(2);
    NumberArray.push_back(2);
     
        //查找並刪除指定元素
    int iFind = 1;
    vector<int>::iterator it = find(NumberArray.begin(), NumberArray.end(), iFind); //第一次查找
    while (it != NumberArray.end())  //判斷是否找到
    {
        it = NumberArray.erase(it); //找到了刪除  並 移動 it  指向下一個位置   
                                    //錯誤寫法: NumberArray.erase(it); it++;  //緣由vector中元素被刪除以後it已經失效,不能進行++操做
        it = find(it, NumberArray.end(), iFind); //繼續查找
    }
 
    return 0;
}

 

指定位置插入元素

.insert()

 

vector<int> temp;
//初始化後

temp.insert(temp.begin()+2,9)//在temp的第2位後插入元素9

 

 

 

清除

.clear()

#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int>obj;
    for(int i=0;i<10;i++)//push_back(elem)在數組最後添加數據 
    {
        obj.push_back(i);
        cout<<obj[i]<<",";
    }
 
    obj.clear();//清除容器中因此數據
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<endl;
    }
 
    return 0;
}

結果

0,1,2,3,4,5,6,7,8,9,

大小

//用來描述大小的一系列函數
vector<int> test(5,1);
cout<<test.size()<<endl;//表示順序表的元素個數
cout<<test.capacity()<<endl;//表示順序表的容量
cout<<test.max_size()<<endl;//表示容器的最大存儲,但實際到不了
test.resize(1);//設置大小,能夠開闢出更多的空間,當參數小於時就銷燬空間
test.resize(10,2);//當大於時就開闢並初始化
cout<<test.size()<<endl;
test.empty();//用來檢查是否爲空
test.reserve(10);//用來設置容器大小可是並不初始化,元素個數也沒變,變化不可見
test.shrink_to_fit();//將容器的大小收縮至於元素個數相同的大小

排序

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    vector<int>obj;
 
    obj.push_back(1);
    obj.push_back(3);
    obj.push_back(0);
 
    sort(obj.begin(),obj.end());//從小到大
 
    cout<<"從小到大:"<<endl;
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";  
    } 
 
    cout<<"\n"<<endl;
 
    cout<<"從大到小:"<<endl;
    reverse(obj.begin(),obj.end());//從大到小 
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";
    }
    return 0;
}

結果

從小到大:
0,1,3,

從大到小:
3,1,0,

訪問

//關於元素存取的函數
//operator[] 既重載[]使其相似於數組元素的操縱,實現隨機訪問
cout<<test.at(1)<<endl;//相似於[]的做用,只是是一個函數行形式
cout<<test.front()<<endl;//顯示存在的第一個元素
cout<<test.back()<<endl;//顯示存在的最後一個元素
int* p = test.data();//取到了一個指向順序表的一個指針
cout<<test.front()<<endl;//顯示存在的第一個元素

//修改動做函數
test.assign(arr,arr+3);//assign替換函數能夠替換一個對象的區間或者一個同類型的數組
test.push_back(4);//尾插,並無頭插
test.pop_back();//尾刪                                                                                                                                        
test.insert(it,5);//插入指定位置
test.erase(it);//刪除指定位置
test.swap(test1);//交換函數,將兩個對象進行交換
test.clear();//清空整個順序表
vector<int>::iterator it2=test.emplace(it,5);//相似於insert可是會返回新插入元的迭代器
test.emplace_back(10);//相似於尾插
相關文章
相關標籤/搜索