中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vector,deque,list相關操作

發布時間:2020-04-03 09:52:19 來源:網絡 閱讀:559 作者:匯天下豪杰 欄目:移動開發

1、vector的基本操作

(1)、對動態數組元素的添加和刪除、獲取

代碼如下:

#include<iostream>
#include<vector>
using namespace std;

//數組元素的添加和刪除、獲取
int main(void){
    vector<int> v1; 

    v1.push_back(1);
    v1.push_back(2);
    v1.push_back(3);

    cout<<"len:"<<v1.size()<<endl;
    cout<<"獲取頭部元素:"<<v1.front()<<endl;

    //修改頭部、尾部元素的值
    //函數返回值當左值,應該返回一個引用;
    v1.front() = 11; 
    v1.back() = 55; 

    while(v1.size() > 0){ 
        cout<<v1.back()<<" ";    //獲取尾部元素;
        v1.pop_back(); //刪除尾部元素
     }   
    cout<<endl;

}

(2)、vector的初始化

代碼如下:

#include<iostream>
#include<vector>
using namespace std;

void printV(vector<int> &v){
    for(int i = 0; i < v.size(); i++){
        cout<<v[i]<<" ";
    }
    cout<<endl;
}

int main(void){
    //vector類
    vector<int> v1;

    v1.push_back(1);
    v1.push_back(3);
    v1.push_back(5);
    v1.push_back(7);

    vector<int> v2 = v1; //對象初始化
    vector<int> v3(v1.begin(), v1.begin()+2); //對象初始化
/*
    //vector的遍歷
    for(i =a 0; i < v1.size(); i++){
        v1[i] = i + 1;
    }
    int i;
    for(i = 0; i < v1.size(); i++){
        cout<<v1[i]<<" ";
    }
    cout<<endl;
*/
    printV(v1);

    //push_back()的強化記憶;
    vector<int> v5(10); //前10個元素初始化為0;
    v5.push_back(100);
    v5.push_back(200);
    printV(v5);
    return 0;    
}

(3)、vector中迭代器的正向和反向遍歷

代碼如下:

#include<iostream>
#include<vector>
using namespace std;

int main(void){
    vector<int> v1(10); //初始化空間的值都為0;
    for(int i = 0; i < 10; i++){
        v1[i] = i+1;
    }   
//迭代器
//1(begin)、3、5 、(end) 當it = v1.end()的時候,說明這個容器已經遍歷完了;
//end()的位置,應該是5的后面;
    //正向遍歷
    vector<int>::iterator it; 
    for(it = v1.begin(); it != v1.end(); it++){
        cout<<*it<<" ";
    }   
    cout<<endl;

    //反向遍歷
    vector<int>::reverse_iterator rit;
    for(rit = v1.rbegin(); rit != v1.rend(); rit++){
        cout<<*rit<<" ";
    }   
    cout<<endl;

    return 0;
}

(4)、vector中的元素刪除操作

代碼如下:

#include<iostream>
#include<vector>
using namespace std;

void printV(vector<int> &v){
    for(int i = 0; i < v.size(); i++){
        cout<<v[i]<<" ";
    }   
    cout<<endl;
}

//刪除
int main(void){
    vector<int> v1(10);

    for(int i = 0; i < 10; i++){
        v1[i] = i + 1;
    }   
    //區間刪除
    v1.erase(v1.begin(), v1.begin()+3); //刪除開始的3個元素
    //指定(元素)位置刪除
    v1.erase(v1.begin()); //在頭部刪除一個

    //根據元素的值
    v1[1] = 2;
    v1[3] = 2;

    vector<int>::iterator it;
    for(it = v1.begin(); it != v1.end(); it++){
        if(*it == 2){
            v1.erase(it); //刪除的是元素,參數是迭代器
        }
    }

    v1.insert(v1.begin(), 100);
    v1.insert(v1.end(), 200);
    printV(v1);
    return 0;
}


2、deque的基本操作

雙端數組的基本操作;

代碼如下:

#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;

void printD(deque<int> &d){
    deque<int>::iterator it; 
    for(it = d.begin(); it != d.end(); it++){
        cout<<*it<<" ";
    }   
    cout<<endl;
}

int main(void){
    deque<int> d1; 
    d1.push_back(1);
    d1.push_back(3);
    d1.push_back(5);

    d1.push_front(-11);
    d1.push_front(-33);
    d1.push_front(-55);

    cout<<"頭部元素:"<<d1.front()<<endl;
    cout<<"尾部元素:"<<d1.back()<<endl;
    printD(d1);
    d1.pop_front();
    d1.pop_back();
    printD(d1);

    //查找-33在數組中的下標
    deque<int>::iterator it;
    it = find(d1.begin(), d1.end(), -33);
    if(it != d1.end()){
        cout<<"-33數組的下標是:"<<distance(d1.begin(), it)<<endl; //查找下標;
    }else{
        cout<<"沒有找到值為-33"<<endl;
    }

    return 0;
}


3、stack的基本操作

代碼如下:

#include<iostream>
#include<stack>
using namespace std;

class Teacher{
    public:
        void printS(){
            cout<<"age :"<<age<<endl;
        }
    public:
        int age;
        char name[15];
};

int main(void){
    Teacher t1,t2,t3;

    t1.age = 31;
    t2.age = 32;
    t3.age = 33;

    stack<Teacher *> s;
    s.push(&t1);
    s.push(&t2);
    s.push(&t3);

    while(!s.empty()){
        Teacher *tmp = s.top();
        tmp->printS();
        s.pop();
    }

    return 0;
}

/*
int main(void){
    Teacher t1,t2,t3;

    t1.age = 31;
    t2.age = 32;
    t3.age = 33;

    stack<Teacher> s;
    s.push(t1);
    s.push(t2);
    s.push(t3);

    while(!s.empty()){
        Teacher tmp = s.top();
        tmp.printS();
        s.pop();    
    }

    return 0;
}
*/
/*
int main(void){
    stack<int> s;

    //入棧
    for(int i = 0; i < 10; i++){
        s.push(i+1);
    }

    cout<<s.size()<<endl; //棧的大小
    //出棧
    while(!s.empty()){
        int tmp = s.top(); //獲取棧頂元素
        cout<<tmp<<" ";
        s.pop();
    }
    cout<<endl;

    return 0;
}
*/


4、queue的基本操作

代碼如下:

#include<iostream>
#include<queue>
using namespace std;

class Teacher{
    public:
        int age;
        char name[25];
    public:
        void printQ(){
            cout<<"age :"<<age<<endl;
        }
};

int main(void){
    Teacher q1, q2, q3;

    q1.age = 31;
    q2.age = 32;
    q3.age = 33;

    queue<Teacher *> q;
    q.push(&q1);
    q.push(&q2);
    q.push(&q3);

    while(!q.empty()){
        Teacher *tmp;
        tmp = q.front(); //獲取隊列頭的元素
        tmp->printQ();
        q.pop();
    }

    return 0;
}


/*
//隊列中的基礎數據類型,
int main(void){
    queue<int> q;

    q.push(1);
    q.push(2);
    q.push(3);


    cout<<"對頭元素:"<<q.front()<<endl;
    cout<<"隊列的大小"<<q.size()<<endl;

    while(!q.empty()){
        cout<<q.front()<<" ";    
        q.pop();
    }
    cout<<endl;
    return 0;
}
*/


5、priority_queue的基本操作

代碼如下:

#include<iostream>
#include<queue>
using namespace std;

int main(void){
    priority_queue<int> p1; //默認的情況下:是最大優先級隊列;
    priority_queue<int, vector<int>, less<int> > p2; 
    priority_queue<int, vector<int>, greater<int> > p3; //是最小的優先級隊列

    p1.push(33);
    p1.push(11);
    p1.push(22);
    p1.push(77);
    p1.push(55);
    p1.push(99);

    cout<<"隊頭元素:"<<p1.top()<<endl;
    cout<<"隊列的大小:"<<p1.size()<<endl;

    while(!p1.empty()){
        cout<<p1.top()<<" "; //獲取隊頭的是top();
        p1.pop();
    }   
    cout<<endl;

    cout<<"--------------------測試最小值優先級隊列---------------------"<<endl;
    p3.push(33);
    p3.push(11);
    p3.push(22);
    p3.push(77);
    p3.push(55);
    p3.push(99);

    cout<<"隊頭元素:"<<p3.top()<<endl;
    cout<<"隊列的大小:"<<p3.size()<<endl;

    while(!p3.empty()){
        cout<<p3.top()<<" "; //獲取隊頭的是top();
        p3.pop();
    }
    cout<<endl;

    return 0;
}


6、list的基本操作

(1)、list的遍歷

代碼如下:

#include<iostream>
#include<list>
using namespace std;

void printL(list<int> &l){
    list<int>::iterator it; 
    for(it = l.begin(); it != l.end(); it++){
        cout<<*it<<" ";
    }   
    cout<<endl;    
}

//迭代器中的begin()和end()代表的含義:begin代表的是第一個元素的位置,end代表的是最后一個元素的下一個元>
素的位置;
int main(void){
    list<int> l;

    cout<<"list的大小:"<<l.size()<<endl;
    for(int i = 0; i < 10; i++){
        l.push_back(i);
    }   

    printL(l);
    //list不能隨即訪問;
    list<int>::iterator it = l.begin();
    it++;
    it++;
    it++;
    l.insert(it, 100); //STL中的插入默認是前插;
    printL(l);


//1、list鏈表的節點的index是從0位置開始的
//2、insert方法都是默認的前插
    return 0;
}

(2)、list的刪除

代碼如下:

#include<iostream>
#include<list>
using namespace std;


void printL(list<int> &l){
    list<int>::iterator it;
    for(it = l.begin(); it != l.end(); it++){
        cout<<*it<<" ";
    }
    cout<<endl;
}
//list刪除
int main(void){
    list<int> l;

    for(int i = 0; i < 10; i++){
        l.push_back(i);
    }   

    list<int>::iterator it1 = l.begin();
    list<int>::iterator it2 = l.begin();
    it2++;
    it2++;
    it2++;

    l.erase(it1, it2); //刪除是左閉右開的操作;[0, 3)
    printL(l);

    l.erase(l.begin());
    printL(l);

    l.insert(l.begin(), 100);
    l.insert(l.begin(), 100);
    l.insert(l.begin(), 100);
    l.insert(l.begin(), 100);
    l.insert(l.begin(), 100);
    printL(l);

    l.remove(100); //刪除元素的方法,刪除了所有值為100的元素;
    printL(l);

    return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海门市| 饶阳县| 淮阳县| 徐水县| 孝义市| 和龙市| 凯里市| 福泉市| 德州市| 广德县| 静乐县| 肥乡县| 略阳县| 确山县| 红桥区| 昌黎县| 永川市| 凌云县| 海门市| 五家渠市| 福贡县| 胶南市| 沾化县| 疏勒县| 乐安县| 汉阴县| 曲靖市| 西贡区| 东乡族自治县| 永清县| 迁西县| 高淳县| 赤壁市| 自贡市| 平远县| 浦县| 梅州市| 漳平市| 南阳市| 敦化市| 垣曲县|