Hy大家。
所以我决定将我的代码归为c ++ 11。
为了简化我的代码,我想将auto
用于iterators
这是我的代码。
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;
}
如何使用auto
在c ++ 11中使这段代码更短?
而且我可以在这个函数中使用智能指针吗?
编辑:DO_ALL_BLEND_INFO(iter)
定义为
#define DO_ALL_BLEND_INFO(iter) for (iter=s_blend_info.begin();iter!=s_blend_info.end(); ++iter) –
答案 0 :(得分:0)
使用auto
和基于范围,您可以使用以下内容替换宏隐藏的for循环,并完全删除宏:
for(auto blend_item_info : s_blend_info)
M2_DELETE(blend_item_info);
它既简短又易于阅读。