close

 

   


typedef struct _grid_info {
    int id;
    char title[20];
    char value[50];
    int option;
}grid_info, *pGrid_info;

struct f_grid_info { //find grid info
    int id;

    f_grid_info(int id) : id(id) {}
    bool operator () (const grid_info& g) const
    {
        return g.id == id;
    }
};


typedef struct _grid_option {
    int id;
    char item0[20];
    char item1[20];
    char item2[20];
    char item3[20];
    char item4[20];
    char item5[20];
    char item6[20];
    char item7[20];
    char item8[20];
    char item9[20];

}grid_option, *pGrid_option;

Header file


vector<grid_info> vgis;
void CMFCCustomDlg::OnBnClickedButton4()
{
    // TODO: Add your control notification handler code here

    grid_info gi;
    ::ZeroMemory(&gi, sizeof(grid_info));

    //init data 
    //vector<grid_info> vgis;
    for (int i = 0; i < 10; i++)
    {
        gi.id = i; //id 0~ max
        sprintf(gi.title, "t_%03d", i);
        gi.option = 1;
        vgis.push_back(gi);
    }

    //find data by id
    gi.id = 2;
    std::vector< grid_info >::iterator it;
    it = std::find_if(vgis.begin(), vgis.end(), f_grid_info(gi.id));

    if (it != vgis.end()) {
        //get it
        TRACE("find data : id = %d, titile  = %s, option = %d\n", it->id, it->title, it->option);

        //modify data
        it->id = 77;
        sprintf(it->title, "%s", "update77");
        it->option = 77;

        TRACE("after modify data : id = %d, titile  = %s, option = %d\n", it->id, it->title, it->option);
        TRACE("Find nothing !!\n");
    }

    //find again
    gi.id = 2;
    it = std::find_if(vgis.begin(), vgis.end(), f_grid_info(gi.id));

    if (it != vgis.end()) {
        //get it
        TRACE("find data : id = %d, titile  = %s, option = %d\n", it->id, it->title, it->option);

        //modify data
        it->id = 77;
        sprintf(it->title, "%s", "update77");
        it->option = 77;

        TRACE("after modify data : id = %d, titile  = %s, option = %d\n", it->id, it->title, it->option);
    }
    else
    {
        TRACE("Find nothing !!\n");
    }
}
 

src 

 

    std::vector< grid_info >::iterator it;
    for (it = vgis.begin(); it != vgis.end(); it++)
    {
        s.Format("%sid = %d, title = %s, value = %d\n",
            s, it->id, it->title, it->option);
    }
     
    CEdit* wEdit;
    wEdit = (CEdit*)GetDlgItem(IDC_STATIC);
    wEdit->SetWindowText(s); //設定
}
印出全部

INIT

image

 

Q:How to modify a struct element in a vector? 

Q:C++中find_if查找vector中的特定struct以及值

image

 

印出全部

image

 
   

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 天才R 的頭像
    天才R

    做 個 有 趣 的 人

    天才R 發表在 痞客邦 留言(0) 人氣()