首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11/汽车-我该怎么做?

C++11/汽车-我该怎么做?
EN

Stack Overflow用户
提问于 2015-11-10 14:10:35
回答 1查看 74关注 0票数 0

你们所有的人。

我决定把我的代码转到c++11。为了简化代码,我想使用auto for iterators

这是我的密码。

代码语言:javascript
复制
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)被定义为

代码语言:javascript
复制
#define DO_ALL_BLEND_INFO(iter) for (iter=s_blend_info.begin();iter!=s_blend_info.end(); ++iter) –
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-10 14:26:15

使用基于auto和range的for,您可以用以下内容替换宏隐藏的for循环,并完全消除宏:

代码语言:javascript
复制
for(auto blend_item_info : s_blend_info)
    M2_DELETE(blend_item_info);

它既短又易读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33631946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档