国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

嵌入式:C++ Day7

這篇具有很好參考價(jià)值的文章主要介紹了嵌入式:C++ Day7。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

作業(yè):一、手動(dòng)封裝vector容器

? ? ? ? ?? 二、思維導(dǎo)圖

一、手動(dòng)封裝vector容器

嵌入式:C++ Day7,c++,開(kāi)發(fā)語(yǔ)言

?源碼:

#include <iostream>

using namespace std;

template < typename T >
class My_vector{
private:
    T *first;
    T *last;
    T *end;

public:
    My_vector<T>() : first(new T[2]), last(first), end(first + 2) {}     //無(wú)參構(gòu)造
    My_vector<T>(int size) : first(new T[size]), last(first), end(first + size) {}  //有參構(gòu)造

    //析構(gòu)函數(shù)
    ~My_vector<T>(){
        delete []first;
    }

    //拷貝構(gòu)造
    My_vector<T>(const My_vector &other){
        int len = other.last - other.first;
        int size = other.end - other.first;
        this->first = new T[size];
        memcpy(this->first, other.first, sizeof(T) * len);
        this->last = this->first + len;
        this->end = this->first + size;
    }

    //拷貝賦值
    My_vector &operator = (const My_vector &other){
        if(this == &other){
            return *this;
        }
        delete []this->first;
        this->first = other.first;
        this->last = other.last;
        this->end = other.end;
        return *this;
    }

    //返回指定坐標(biāo)的值
    T &at(int index){
        int len = last - first;
        if(index < 0 || index > len){
            throw -1;
        }
        return first[index];
    }

    //判空
    bool empty(){
        return first == last;
    }

    //判滿
    bool full(){
        return last == end;
    }

    //返回第一個(gè)元素
    T &front(){
        return *first;
    }

    //返回最后一個(gè)元素
    T &back(){
        return *(last - 1);
    }

    //返回容器元素個(gè)數(shù)
    int size(){
        return last -first;
    }

    //清空vector容器
    void clear(){
        last = first;
        cout << "清空容器成功!" << endl;
    }

    //二倍擴(kuò)容
    void expand(){
        int size = end - first;
        T *temp = new T[2 * size];
        memcpy(temp, first, size * sizeof(T));
        delete []first;
        first = temp;
        last = first + size;
        end = first + 2 * size;
    }

    //尾插
    void push_back(T data){
        if(full()){
            expand();
        }
        *last = data;
        last++;
        cout << "插入成功!尾插元素為:" << data << endl;
    }

    //尾刪
    void pop_back(){
        if(empty()){
            cout << "容器為空,無(wú)法刪除!" << endl;
            return;
        }
        --last;
        cout << "刪除成功!尾刪元素為:" << *last << endl;
    }

    //遍歷
    void output(){
        if(empty()){
            cout << "容器內(nèi)無(wú)元素!" << endl;
            return;
        }
        int len = last - first;
        cout << "容器內(nèi)元素為:" << endl;
        for(int i = 0; i < len; i++){
            cout << first[i] << "  ";
        }
        cout << endl;
    }
};
int main()
{
    int n;
    cout << "請(qǐng)輸入容器的大小: ";
    cin >> n;
    My_vector<int> v1(n);     //實(shí)例化對(duì)象 有參構(gòu)造

    //尾插元素
    v1.push_back(1);
    v1.push_back(2);
    v1.push_back(3);
    v1.push_back(4);
    v1.push_back(5);
    v1.push_back(6);
    v1.output();

    //尾刪元素
    v1.pop_back();
    v1.pop_back();
    v1.output();

    cout << "第一個(gè)元素的值為:" << v1.front() << endl;
    cout << "最后一個(gè)元素的值為:" << v1.back() << endl;
    cout << "元素容器個(gè)數(shù)為:" << v1.size() << endl;
    v1.clear();   //清空容器
    v1.output();
    return 0;
}

二、思維導(dǎo)圖

嵌入式:C++ Day7,c++,開(kāi)發(fā)語(yǔ)言文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-608866.html

到了這里,關(guān)于嵌入式:C++ Day7的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 嵌入式Linux Qt5 (C++)開(kāi)發(fā)欄目概述

    本欄目開(kāi)始介紹Linux系統(tǒng)下的Qt C++程序開(kāi)發(fā),資源是以嵌入式為切入點(diǎn)(現(xiàn)在Linux系統(tǒng)下的Qt C++程序開(kāi)發(fā)好像就是應(yīng)用于嵌入式),那就跟著一起學(xué)習(xí) Linux系統(tǒng)下的Qt C++程序開(kāi)發(fā)知識(shí) ,再擴(kuò)展一下 嵌入式 的知識(shí)吧。我這里默認(rèn)已經(jīng) 熟悉C++基本語(yǔ)法、熟悉Qt在windows下的使用方

    2024年02月12日
    瀏覽(23)
  • 【嵌入式Qt開(kāi)發(fā)入門(mén)】在Ubuntu下編寫(xiě)C++

    【嵌入式Qt開(kāi)發(fā)入門(mén)】在Ubuntu下編寫(xiě)C++

    ????????在 Ubuntu 上面編寫(xiě) C++,本文內(nèi)容主要介紹在 Ubuntu 在終端窗口下使用 vi/vim 編輯一 個(gè) C++源文件。通過(guò)編寫(xiě)最簡(jiǎn)單的示例“Hello,World!”。帶領(lǐng)大家學(xué)習(xí)如何在 Ubuntu 終端下編輯和編譯 C++。這里要求大家會(huì)在 Ubuntu 上使用 vi/vim,也就是要求大家有一點(diǎn) Ubuntu 入門(mén)的基

    2024年02月11日
    瀏覽(22)
  • C/C++語(yǔ)言學(xué)習(xí)路線: 嵌入式開(kāi)發(fā)、底層軟件、操作系統(tǒng)方向(持續(xù)更新)

    C/C++語(yǔ)言學(xué)習(xí)路線: 嵌入式開(kāi)發(fā)、底層軟件、操作系統(tǒng)方向(持續(xù)更新)

    1.1 視頻教程點(diǎn)到為止 1.2 炫技視頻看看就行 1.3 編程游戲不玩也罷 有些游戲的主題任務(wù)就是編程,游戲和實(shí)際應(yīng)用環(huán)境有一定差異(工具、操作流程),在初級(jí)階段主要是熟悉實(shí)際場(chǎng)景,而且多數(shù)是通過(guò)前端語(yǔ)言進(jìn)行游戲,對(duì)底層軟件學(xué)習(xí)的幫助不大。 Coding Games: PHP、C、

    2024年04月28日
    瀏覽(27)
  • 【C C++開(kāi)源庫(kù)】適合單片機(jī) 嵌入式的C語(yǔ)言單元測(cè)試庫(kù)_單片機(jī) 單元測(cè)試框架

    【C C++開(kāi)源庫(kù)】適合單片機(jī) 嵌入式的C語(yǔ)言單元測(cè)試庫(kù)_單片機(jī) 單元測(cè)試框架

    #define TEST_ASSERT_LESS_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, NULL) #define TEST_ASSERT_LESS_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL) #define TEST_ASSERT_LESS_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((thres

    2024年04月25日
    瀏覽(31)
  • 嵌入式學(xué)習(xí)day34 網(wǎng)絡(luò)

    嵌入式學(xué)習(xí)day34 網(wǎng)絡(luò)

    TCP包頭: 1.序號(hào):發(fā)送端發(fā)送數(shù)據(jù)包的編號(hào) 2.確認(rèn)號(hào):已經(jīng)確認(rèn)接收到的數(shù)據(jù)的編號(hào)(只有當(dāng)ACK為1時(shí),確認(rèn)號(hào)才有用) TCP為什么安全可靠: 1.在通信前建立三次握手連接 ? ? SYN ? ? SYN+ACK? ? ? ACK? 2.在通信過(guò)程中通過(guò)序列號(hào)和確認(rèn)號(hào)保障數(shù)據(jù)傳輸?shù)耐暾?? ? 本次發(fā)送序列號(hào):上次收

    2024年03月10日
    瀏覽(30)
  • C/C++|物聯(lián)網(wǎng)開(kāi)發(fā)入門(mén)+項(xiàng)目實(shí)戰(zhàn)|指針|嵌入式C語(yǔ)言高級(jí)|C語(yǔ)言內(nèi)存空間的使用-學(xué)習(xí)筆記(9)

    C/C++|物聯(lián)網(wǎng)開(kāi)發(fā)入門(mén)+項(xiàng)目實(shí)戰(zhàn)|指針|嵌入式C語(yǔ)言高級(jí)|C語(yǔ)言內(nèi)存空間的使用-學(xué)習(xí)筆記(9)

    參考: 麥子學(xué)院-嵌入式C語(yǔ)言高級(jí)-內(nèi)存空間 內(nèi)存類型資源地址、門(mén)牌號(hào)的代名詞 指針:地址的代名詞 指針變量:存放指針這個(gè)概念的盒子 *P char *p *p; C語(yǔ)言娟譯器對(duì)指針這個(gè)特殊的概念,有2個(gè)疑問(wèn)? 1、分配一個(gè)盒子,盒子要多大? 在32bit系統(tǒng)中,指針就4個(gè)字節(jié) 2、盤(pán)子里存放

    2023年04月22日
    瀏覽(104)
  • 嵌入式:QT Day1

    嵌入式:QT Day1

    源碼: widge.h ?widge.cpp ?main.cpp

    2024年02月15日
    瀏覽(24)
  • 嵌入式學(xué)習(xí)day22 Linux

    文件IO: ? ? 1. lseek ? ? ? ?off_t lseek(int fd, off_t offset, int whence); ? ? ? ?功能: ? ? ? ? ? ? 重新設(shè)定文件描述符的偏移量 ? ? ? ?參數(shù): ? ? ? ? ? ? fd:文件描述符 ? ? ? ? ? ? offset:偏移量 ? ? ? ? ? ? whence: ? ? ? ? ? ? ? ? SEEK_SET ? ?文件開(kāi)頭 ? ? ? ? ? ? ? ? SEEK_CUR

    2024年02月21日
    瀏覽(21)
  • 嵌入式:ARM Day4

    嵌入式:ARM Day4

    ?源碼: ? ? ? ? 在上述代碼中,int *ptr定義了一個(gè)指向整數(shù)類型的指針ptr,(int *)將地址0x5000A28強(qiáng)制轉(zhuǎn)換為整數(shù)類型的指針,后續(xù)可以通過(guò)*ptr訪問(wèn)與修改該地址空間中的值。 ?

    2024年02月12日
    瀏覽(27)
  • 嵌入式:QT Day4

    嵌入式:QT Day4

    源碼: widget.h widget.cpp main.cpp

    2024年02月14日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包