gpt4 book ai didi

C++11 自动/我不明白的东西

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:28 26 4
gpt4 key购买 nike

好的。这是我的代码:

CShop::~CShop()
{
TPacketGCShop pack;
pack.header = HEADER_GC_SHOP;
pack.subheader = SHOP_SUBHEADER_GC_END;
pack.size = sizeof(TPacketGCShop);
Broadcast(&pack, sizeof(pack));
GuestMapType::iterator it;
it = m_map_guest.begin();
while (it != m_map_guest.end())
{
LPCHARACTER ch = it->first;
ch->SetShop(NULL);
++it;
}
M2_DELETE(m_pGrid);
}

所以我有 GuestMapType::iterator it; 和这个 it = m_map_guest.begin();

如果我这样实现我的功能就好了吗?

CShop::~CShop()
{
TPacketGCShop pack;
pack.header = HEADER_GC_SHOP;
pack.subheader = SHOP_SUBHEADER_GC_END;
pack.size = sizeof(TPacketGCShop);
Broadcast(&pack, sizeof(pack));

auto it = m_map_guest.begin();
while (it != m_map_guest.end())
{
LPCHARACTER ch = it->first;
ch->SetShop(NULL);
++it;
}
M2_DELETE(m_pGrid);
}

我删除了 GuestMapType::iterator ;简化我的代码?我的问题是。影响这个我的程序?有什么风险吗?

最佳答案

这非常好,在我看来,使用 auto 声明迭代器是一个很好的做法,至少有两个原因:

1- 通常,迭代器的类型很长。你输入的越少,你输入错误的次数就越少。它也使代码更清晰,因为您隐藏了在该上下文中并不重要的实现细节

2- 向前兼容性:当您修改代码时,即迭代器类型名称的名称,您不必更改使用 auto< 的代码。毕竟,您想使用那种类型的迭代器,而不管它的名称。

关于C++11 自动/我不明白的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com