C++11/ 自动给我分配一个布尔值
C++11/ Auto assign me a bool?
TGuildMemberContainer::iterator it;
if ((it = m_member.find (p->dwPID)) == m_member.end())
{
m_member.insert (std::make_pair (p->dwPID, TGuildMember (p->dwPID, p->bGrade, p->isGeneral, p->bJob, p->bLevel, p->dwOffer, p->szName)));
}
else
{
TGuildMember& r_gm = it->second;
r_gm.pid = p->dwPID;
r_gm.grade = p->bGrade;
r_gm.job = p->bJob;
r_gm.offer_exp = p->dwOffer;
r_gm.is_general = p->isGeneral;
}
嗨,我想应用自动转换介绍我的代码,但我卡住了。如果我添加自动
if (auto it = m_member.find (p->dwPID) == m_member.end())
自动分配bool
if ( bool it = m_member.find (p->dwPID) == m_member.end())
这说Visual Studio intelisense。
我的问题,为什么要自动为我分配一个布尔值而不是corect迭代范围?
因为编译器将其解析为:
if (auto it = (m_member.find (p->dwPID) == m_member.end()))
这是一个布尔表达式。 您不能将其写为:
if ((auto it = m_member.find (p->dwPID)) == m_member.end())
因为不允许将变量声明放在括号内。
我发现if
创建变量很难阅读。 只需使用:
const auto it = m_member.find(p->dwPID);
if (it == m_member.end())
...
在 C++17 中,这可以完成为
if (auto it = m_member.find (p->dwPID); it == m_member.end())
这避免了另一个答案中提到的范围问题。
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 在一个作用域中推送五个对象指针,然后检查对象的布尔值是否为 false,会给出错误
- 如何使用布尔值来防止在一个类中加载两次
- C++11/ 自动给我分配一个布尔值
- 将8个布尔值转换为一个字节的最佳方式
- 将地址和布尔值存储在一个单词中,以实现无锁双链表
- 我可以有一个跳过索引的布尔值的单维数组吗?
- 如何创建一个合适的布尔值 员工::运算符==(const Employee & rhs) const
- 为什么set/map emplace_hint不返回一个布尔值
- 布尔值转换为字符串,并将boolalpha与一个方法组合在一起,而不是在打印时单独键入它
- 我如何在c++中创建一个类,当初始化时,当调用其名称时返回布尔值,但没有显式的函数调用,如ifstream
- C++ 将八个布尔值压缩成一个字符