質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

244閲覧

【C++】多重配列(array)を初期化する関数の引数について

torimingo

総合スコア122

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/04/14 05:07

多重配列(array)を初期化する関数の引数の書き方がわかりません。

以下の配列(mMap)があるとします。

C++

1static const int xSize = 50; 2static const int ySize = 10; 3std::array<std::array<char, xSize>, ySize> mMap;

上記の、xSize、ySize、mMapを、以下のfillArray()に渡して初期化したいのですが
引数の書き方がわかりません。

c++

1void fillArray(mMap, xSize, ySize) // ←引数の書き方がわからない 2{ 3 // 初期化処理 4}

ご存知の方がおりましたら、教えて頂けないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

コンストラクタ内で'?'で埋めてみた。

C++

1#include <array> 2#include <algorithm> 3#include <iterator> 4 5class Game { 6private: 7 static const int xSize = 3; 8 static const int ySize = 3; 9 std::array<std::array<char,xSize>,ySize> mMap; 10public: 11 Game() { 12 for ( auto& item : mMap ) { 13 std::fill(std::begin(item), std::end(item), '?'); 14 } 15 } 16};

投稿2019/04/14 06:09

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torimingo

2019/04/14 06:36

ご回答ありがとうございます。 コンストラクタ内で埋めるって方法もありますね・・・!
episteme

2019/04/14 12:26

いや、言いたいのはソコじゃない。fill()で埋める方法。
guest

0

ベストアンサー

こんにちは。

mMapにはサイズも渡っていますので、別途渡す必要はないですよ。

C++

1#include <array> 2#include <iostream> 3 4static const int xSize = 50; 5static const int ySize = 10; 6typedef std::array<std::array<char, xSize>, ySize> Map; 7 8void fillArray(Map &mMap) // ←引数の書き方がわからない 9{ 10 // 初期化処理 11 for (auto& row : mMap) 12 { 13 for (auto& col : row) 14 { 15 col = ' '; 16 } 17 } 18} 19int main() 20{ 21 Map mMap; 22 fillArray(mMap); 23}

投稿2019/04/14 05:36

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torimingo

2019/04/14 06:33

ご回答ありがとうございます。 なるほどー、サイズを渡す必要はないんですね。
guest

0

c++

1template <const size_t xSize, const size_t ySize> 2void fillArray(std::array<std::array<char, xSize>, ySize> &mMap){ 3}

投稿2019/04/14 05:32

編集2019/04/14 05:33
asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torimingo

2019/04/14 06:34

ご回答ありがとうございます。 テンプレートを関数に適用する方法もあるんですね。 自分にはまだ理解できてませんが、必要に応じて、思い出させて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問