2015-11-10 136 views
0

Hy你們所有人。C++ 11/Auto - 我應該怎麼做?

Soo我決定把我的代碼提交給C++ 11。 爲了簡化我的代碼我想使用autoiterators

這是我的代碼。

bool Blend_Item_init() 
{ 
    BLEND_ITEM_INFO *blend_item_info = NULL; 
    T_BLEND_ITEM_INFO::iterator iter; 
    char file_name[256]; 
    snprintf (file_name, sizeof(file_name), "%s/blend.txt", LocaleService_GetBasePath().c_str()); 

    sys_log(0, "Blend_Item_init %s ", file_name); 

    DO_ALL_BLEND_INFO(iter) 
    { 
     blend_item_info = *iter; 
     M2_DELETE(blend_item_info); 
    } 
    s_blend_info.clear(); 

    if (false==Blend_Item_load(file_name)) 
    { 
     sys_err("<Blend_Item_init> fail"); 
     return false; 
    } 
    return true; 
} 

我應該如何使這個代碼在c + + 11更短的auto? 而且我還可以在這個功能中使用智能指針?

編輯:DO_ALL_BLEND_INFO(iter)被定義爲

#define DO_ALL_BLEND_INFO(iter) for (iter=s_blend_info.begin();iter!=s_blend_info.end(); ++iter) – 
+0

什麼是'DO_ALL_BLEND_INFO(iter)'? – user463035818

+0

#define DO_ALL_BLEND_INFO(iter)\t for(iter = s_blend_info.begin(); iter!= s_blend_info.end(); ++ iter) – user5546877

+2

我並沒有真正迷戀某些人,讓他們的代碼「儘可能短「。爲了可讀性,而不是長度。 –

回答

0

隨着auto和一系列基於對,可以更換爲循環,由宏隱藏着以下,擺脫完全由宏:

for(auto blend_item_info : s_blend_info) 
    M2_DELETE(blend_item_info); 

它既簡短又易於閱讀。

+0

嘿謝謝你。我會現在檢查。 – user5546877