#include <iostream>
#include <string>
#include <map>
struct Data
{
  std::string s;
  int number;
  Data(std::string ss, int n) : s(std::move(ss)), number(n){}
  Data(Data&& rhs) : s(std::move(rhs.s)), number(rhs.number){}
  Data(Data const& rhs):s(rhs.s), number(rhs.number){}
};

int main()
{
  std::map<std::string,Data> m_data;
  auto lamda = [&m_data](std::string const&k, int v)->void {
    if(m_data.find(k) == m_data.end()){
      m_data.emplace(k,Data(k,v));
    }
  };

  lamda("1234", 1);
  lamda("12C7", 2);
  lamda("123F", 3);
  lamda("1234", 4);
  lamda("jklh", 5);

  for(auto& v : m_data)
  {
    std::cout << v.second.s << "," << v.second.number << std::endl;
  }
  return 0;
}

