第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在c+中創(chuàng)建連續(xù)的2d數組?

如何在c+中創(chuàng)建連續(xù)的2d數組?

C++
紫衣仙女 2019-06-24 17:08:40
如何在c+中創(chuàng)建連續(xù)的2d數組?我想要創(chuàng)建一個函數,在C+中返回一個連續(xù)的2D數組。使用以下命令創(chuàng)建數組沒有問題: int (*v)[cols] = new (int[rows][cols]);但是,我不知道如何將這個數組作為函數的一般類型返回。其職能是:  NOT_SURE_WHAT_TYPE create_array(int rows, int cols)   {         int (*v)[cols] = new (int[rows][cols]);         return v;   }我試過雙倍和雙倍,但兩者都不起作用。我不想使用Double*,因為我想以2D數組的形式從外部訪問這個數組。有關問題:如何使用New在C+中聲明2d數組?
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

除非在編譯時知道兩個維度的大小,否則您沒有太多的選擇:分配一個rows*cols數組intS,并使用整數乘法和加法滾動您自己的2D索引。將其封裝在類中可以生成一個漂亮的語法,用于使用方括號運算符訪問數組元素。因為您的數組是2D的,所以您需要使用代理(AKA“代理”)對象進行第一級數據訪問。

下面是一個小示例代碼,它使用std::vector<T>用于維護動態(tài)內存中的連續(xù)內存區(qū)域:

template<class T>class Array2D {
    vector<T> data;
    size_t cols;public:
    // This is the surrogate object for the second-level indexing
    template <class U>
    class Array2DIndexer {
        size_t offset;
        vector<U> &data;
    public:
        Array2DIndexer(size_t o, vector<U> &dt) : offset(o), data(dt) {}
        // Second-level indexing is done in this function
        T& operator[](size_t index) {
            return data[offset+index];
        }
    };
    Array2D(size_t r, size_t c) : data (r*c), cols(c) {}
    // First-level indexing is done in this function.
    Array2DIndexer<T> operator[](size_t index) {
        return Array2DIndexer<T>(index*cols, data);
    }};

你現(xiàn)在可以用Array2D<int>就好像它是內置的C+數組:

Array2D<int> a2d(10, 20);for (int r = 0 ; r != 10 ; r++) {
    for (int c = 0 ; c != 20 ; c++) {
        a2d[r][c] = r+2*c+1;
    }}

在IDONE上運行演示.


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 601 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號