2017-11-23 6 views
-4

ベクトルまたはポインタを使用せずに2次元配列をC++で返すことはできますか?あなたはベクター又は ポインタを使用せずにC++で2次元配列を返すことができ ベクトルなしでC++で2次元配列を返す

私はこの答えを見つけましたが、pointsers https://stackoverflow.com/a/4172103/4954387

+2

'std :: array

+5

あなたがリンクしている答えはひどいです。 C++では配列を値渡しすることはできません。それが[std :: array'](http://en.cppreference.com/w/cpp/container/array)の理由の1つです。代わりに、結果を関数の追加引数として記述できる配列を受け入れることもできます。 'std :: vector'を使いたくない特別な理由はありますか? –

+2

ベクターがないのはなぜですか? – Galik

答えて

2

を使用したとき、私は自分自身をラム管理したくないですか?

コンパイル時にサイズがわかっていて、クラスタイプで配列をラップする場合のみです。ちょうど1次元配列のように。配列を直接返すことはできません。

struct Array 
{ 
    int array[2][3]; 
}; 

Array f() 
{ 
    return Array { 1, 1, 1, 2, 2, 2 }; 
} 

int main() 
{ 
    auto const array = f(); 
} 

あなたはArrayのようなクラスを使用することを考慮した場合、標準ライブラリはすでにそのためのstd::arrayを提供することを二回と心だと思います。

コンパイル時にサイズがわからない場合は、「ベクターを使用せずに」要件を削除し、std::vectorを使用してください。