你们所有的人。
我决定把我的代码转到c++11。为了简化代码,我想使用auto for 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;
}如何在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) –发布于 2015-11-10 14:26:15
使用基于auto和range的for,您可以用以下内容替换宏隐藏的for循环,并完全消除宏:
for(auto blend_item_info : s_blend_info)
M2_DELETE(blend_item_info);它既短又易读。
https://stackoverflow.com/questions/33631946
复制相似问题