(2019年4月16日)
■使用ソフト
・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][0]=3, data[1][0][0]=3, data[0][1][0]=3, data[1][1][0]=3,
data[0][0][1]=3, data[1][0][1]=3, data[0][1][1]=3, data[1][1][1]=3で初期化
data(X, std::vector<std::vector<int> >(Y, std::vector<int>(Z, S)))→data[X][Y][Z]全てSで初期化*/
std::vector<std::vector<std::vector<int> > > data(2, std::vector<std::vector<int> >(2, std::vector<int>(2, 3)));
data[0][0].emplace_back(6);//data[0][0][2]=6を追加
data[0][0].emplace_back(7);//data[0][0][3]=7を追加
data[0].emplace_back(1, 4);//data[0][2][0]=4を追加
data[0].emplace_back(1, 5);//data[0][3][0]=5を追加
//data[2][0][0]=8, data[2][1][0]=8, data[2][0][1]=8, data[2][1][1]=8を追加
data.emplace_back(std::vector<std::vector<int> >(2, std::vector<int>(2, 8)));
swprintf(wcText, 256, L"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", data[0][0][0], data[1][0][0], data[0][1][0], data[1][1][0],
data[0][0][1], data[1][0][1], data[0][1][1], data[1][1][1], data[0][0][2], data[0][0][3], data[0][2][0], data[0][3][0],
data[2][0][0], data[2][1][0], data[2][0][1], data[2][1][1]);
MessageBox(NULL, wcText, L"vector動的3次元配列", MB_OK);
return 0;
}
#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][0]=3, data[1][0][0]=3, data[0][1][0]=3, data[1][1][0]=3,
data[0][0][1]=3, data[1][0][1]=3, data[0][1][1]=3, data[1][1][1]=3で初期化
data(X, std::vector<std::vector<int> >(Y, std::vector<int>(Z, S)))→data[X][Y][Z]全てSで初期化*/
std::vector<std::vector<std::vector<int> > > data(2, std::vector<std::vector<int> >(2, std::vector<int>(2, 3)));
data[0][0].emplace_back(6);//data[0][0][2]=6を追加
data[0][0].emplace_back(7);//data[0][0][3]=7を追加
data[0].emplace_back(1, 4);//data[0][2][0]=4を追加
data[0].emplace_back(1, 5);//data[0][3][0]=5を追加
//data[2][0][0]=8, data[2][1][0]=8, data[2][0][1]=8, data[2][1][1]=8を追加
data.emplace_back(std::vector<std::vector<int> >(2, std::vector<int>(2, 8)));
swprintf(wcText, 256, L"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", data[0][0][0], data[1][0][0], data[0][1][0], data[1][1][0],
data[0][0][1], data[1][0][1], data[0][1][1], data[1][1][1], data[0][0][2], data[0][0][3], data[0][2][0], data[0][3][0],
data[2][0][0], data[2][1][0], data[2][0][1], data[2][1][1]);
MessageBox(NULL, wcText, L"vector動的3次元配列", MB_OK);
return 0;
}
配列イメージ
3.std::vector動的3次元配列
<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][0]=3, data[1][0][0]=3, data[0][1][0]=3, data[1][1][0]=3,
data[0][0][1]=3, data[1][0][1]=3, data[0][1][1]=3, data[1][1][1]=3で初期化
data(X, std::vector<std::vector<int> >(Y, std::vector<int>(Z, S)))→data[X][Y][Z]全てSで初期化*/
std::vector<std::vector<std::vector<int> > > data(2, std::vector<std::vector<int> >(2, std::vector<int>(2, 3)));
//data.resize(X, std::vector<std::vector<int> >(Y, std::vector<int>(Z, T)))→data[X][Y][Z]でサイズ変更し増えた分を全てTで初期化*/
data.resize(3, std::vector<std::vector<int> >(2, std::vector<int>(2, 9)));
swprintf(wcText, 256, L"%d %d %d %d %d %d %d %d %d %d %d %d", data[0][0][0], data[1][0][0], data[0][1][0], data[1][1][0],
data[0][0][1], data[1][0][1], data[0][1][1], data[1][1][1], data[2][0][0], data[2][1][0], data[2][0][1], data[2][1][1]);
MessageBox(NULL, wcText, L"vector動的3次元配列", MB_OK);
return 0;
}
#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][0]=3, data[1][0][0]=3, data[0][1][0]=3, data[1][1][0]=3,
data[0][0][1]=3, data[1][0][1]=3, data[0][1][1]=3, data[1][1][1]=3で初期化
data(X, std::vector<std::vector<int> >(Y, std::vector<int>(Z, S)))→data[X][Y][Z]全てSで初期化*/
std::vector<std::vector<std::vector<int> > > data(2, std::vector<std::vector<int> >(2, std::vector<int>(2, 3)));
//data.resize(X, std::vector<std::vector<int> >(Y, std::vector<int>(Z, T)))→data[X][Y][Z]でサイズ変更し増えた分を全てTで初期化*/
data.resize(3, std::vector<std::vector<int> >(2, std::vector<int>(2, 9)));
swprintf(wcText, 256, L"%d %d %d %d %d %d %d %d %d %d %d %d", data[0][0][0], data[1][0][0], data[0][1][0], data[1][1][0],
data[0][0][1], data[1][0][1], data[0][1][1], data[1][1][1], data[2][0][0], data[2][1][0], data[2][0][1], data[2][1][1]);
MessageBox(NULL, wcText, L"vector動的3次元配列", MB_OK);
return 0;
}
配列イメージ
3.std::vector動的3次元配列
0 件のコメント:
コメントを投稿