このブログを検索

2019年4月14日日曜日

【C++】 std::vector動的2次元配列

【C++】 std::vector動的2次元配列
(2019年4月14日)


■使用ソフト
・Visual Studio Community 2019


■言語
・C/C++


■Windows SDK バージョン
・10.0.17763.0
 ※Windows SDK バージョンの変更方法


■手順

以下の2種類の方法を記載

emplace_back
resize


<emplace_back>

1.基本的には以下の流れ参照
【C++】 メッセージボックスの作成

2.C++ファイル(.cpp)を以下のとおり変更する。

#include <windows.h>
#include <wchar.h>
#include <vector>

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    WCHAR wcText[256];
    /*data[0][0]=3, data[1][0]=3, data[0][1]=3, data[1][1]=3で初期化

      data(X, std::vector<int>(Y, S))→data[X][Y]全てSで初期化*/
    std::vector<std::vector<int> > data(2, std::vector<int>(2, 3));

    data[0].emplace_back(4);//data[0][2]=4を追加
    data[0].emplace_back(5);//data[0][3]=5を追加
    //data[2][0]=8, data[2][1]=8を追加
    data.emplace_back(std::vector<int>(2, 8));

    swprintf(wcText, 256, L"%d %d %d %d %d %d %d %d", data[0][0], data[1][0], data[0][1], data[1][1],
        data[0][2], data[0][3], data[2][0], data[2][1]);

    MessageBox(NULL, wcText, L"vector動的2次元配列", MB_OK);

    return 0;
}

配列イメージ


3.std::vector動的2次元配列


<resize>

1.基本的には以下の流れ参照
【C++】 メッセージボックスの作成

2.C++ファイル(.cpp)を以下のとおり変更する。

#include <windows.h>
#include <wchar.h>
#include <vector>

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    WCHAR wcText[256];
    /*data[0][0]=3, data[1][0]=3, data[0][1]=3, data[1][1]=3で初期化

      data(X, std::vector<int>(Y, S))→data[X][Y]全てSで初期化*/
    std::vector<std::vector<int> > data(2, std::vector<int>(2, 3));

    //data.resize(X, std::vector<int>(Y, T))→data[X][Y]でサイズ変更し増えた分を全てTで初期化*/
    data.resize(3, std::vector<int>(2, 9));

    swprintf(wcText, 256, L"%d %d %d %d %d %d", data[0][0], data[1][0], data[0][1], data[1][1],
        data[2][0], data[2][1]);

    MessageBox(NULL, wcText, L"vector動的2次元配列", MB_OK);

    return 0;
}

配列イメージ


3.std::vector動的2次元配列

0 件のコメント:

コメントを投稿