c++ map

一、map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。

对于迭代器来说,可以修改实值,而不能修改key。

#include <map>
using namespace std;
map<int,vector<byte>> mapDatas;
void CMFCApplication2Dlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    
    vector<byte> vTemp;
    for (int i = 0; i < 4; i++)
    {
        vTemp.clear();
        vTemp.push_back((byte)i);
        vTemp.push_back((byte)(i+1));
        mapDatas.insert(map<int, vector<byte>>::value_type(i, vTemp));
    }
    
    map<int, vector<byte>>::iterator iter;
    
    for (iter = mapDatas.begin(); iter != mapDatas.end(); iter++)
    {
        int  key = iter->first;
        vector<byte> value = iter->second;

        OutputDebugString(_T("\r\n"));
        for (int i = 0; i < value.size(); i++)
        {
            CString str;
            str.Format(_T("0x%02X"), value[i]);
            OutputDebugString(str+" ");
        }
    }

}

 

 二、可以是结构体等自定义数据类型

    struct Var_Type{
      const char* name;
      int byte_size;

    };
 map<string,std::vector<Var_Type>> data_map_;

void MainWindow::on_pushButton_2_clicked()
{
    Var_Type t1;
    t1.name="a1";
    t1.byte_size =10;

    Var_Type t2;
    t2.name="a2";
    t2.byte_size =20;   

    Var_Type t3;
    t3.name="a3";
    t3.byte_size =30;

    Var_Type t4;
    t4.name="a4";
    t4.byte_size =40;


    vector<Var_Type> vec1;
    vec1.push_back(t1);
    vec1.push_back(t2);

    vector<Var_Type> vec2;
    vec2.push_back(t3);
    vec2.push_back(t4);

    string key ="a";
    if(data_map_.count(key)==0)
    {
        data_map_.insert(pair<string, vector<Var_Type>>(key,vec1));
    }

    if(data_map_.count(key)==0)
    {
        data_map_.insert(pair<string, vector<Var_Type>>(key,vec2));
    }



}
void MainWindow::on_pushButton_3_clicked()
{
  setbuf(stdout, NULL);
  std::vector<Var_Type> data=data_map_["a"];

  int size = data.size();

  for(int i =0;i<size;i++)
  {

    printf("name:%s\n",data[i].name);
    printf("byte_size:%d\n",data[i].byte_size);

  }

}

 

 

 

posted @ 2017-11-01 10:56  ike_li  阅读(301)  评论(0编辑  收藏  举报