c++
std::map,std::vectorの実装サンプル
同一のキーをmapのデータ部のvectorに設定するサンプルプログラム
データを検索する
検索してヒットしなかった場合はmapにデータを新規で登録する
検索してヒットした場合はmapのvector配列に追加登録する
sample.cpp
#include <iostream>
#include <map>
#include <vector>
using namespace std;
std::map<int, std::vector<std::string>> mpData;
void Push_back(int key, std::vector<std::string> vcStr)
{
auto itr = mpData.find(key);
if (itr != std::end(mpData))
{
// ②すでに同じキーで登録されている場合はsecondにvector配列として追加登録する
for (auto itr2 = vcStr.begin(), end = vcStr.end(); itr2 != end; ++itr2)
{
(*itr).second.push_back(*itr2);
}
}
else
{ // ①キーが登録されていないので新規で登録する
mpData[key] = vcStr;
}
}
int main(void)
{
// ①キーが登録されていないので新規で登録する
int key1 = 1;
std::vector<std::string> vcStr1;
vcStr1.push_back("aaa");
vcStr1.push_back("bbb");
Push_back(key1, vcStr1);
// ②すでに同じキーで登録されている場合はsecondにvector配列として追加登録する
int key2 = 1;
std::vector<std::string> vcStr2;
vcStr2.push_back("ccc");
vcStr2.push_back("ddd");
Push_back(key2, vcStr2);
// ③キーが登録されていないので新規で登録する
int key3 = 2;
std::vector<std::string> vcStr3;
vcStr3.push_back("eee");
vcStr3.push_back("fff");
Push_back(key3, vcStr3);
return 0;
}