C++如何返回不定長數組


起初遇到這個問題的時候便得知無法返回,那么為了達到相同的目的,該怎么辦呢?

第一個想法便是

int * void()
{
    int * want = new int[size];
    //......do something
    
    return want;
}

這種的好處是非常簡潔,返回一個數組指針,C++是允許返回指針的,但必須在方法里面好好賦值,也就是說“do something”的時候,如果添加到want這個數組的個數是不確定的時候(此方法多次調用的時候)

就會非常的不方便,size不確定。

那么便生成了第二種想法,利用vector

vector<int *> void()
{
    vector<int *> want;
    //...do something
    // must  int * add = ? ;
    //want.push_back(add)
    
    return want;
}

這里注意的是必須中途用指針的add去繼承?的值,不能直接int add =?(會報錯,無法push_back)

但是,讀出want元素的時候,你回發現全是硬盤地址。。。00xxadd00,00qssdf00之類的。。。

於是最終版本

vector<int > void()
{
    vector<int > want;
    //...do something
    // must  int  add = ? ;
    //want.push_back(add)
    
    return want;
}

直接是int對象的vector即可,既滿足了原來的需求(返回不定長數組),vector又有很多方便的方法可以調用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM