有人可以解释这行代码吗?

Can someone explain this line of code?

本文关键字:代码 解释      更新时间:2023-10-16
void Player::removeWeapon(int location)
{
    if (location<(int)weaponInCharacter.size()) {
        weaponInCharacter.erase(weaponInCharacter.begin() + location);
    }
}

我不确定以下行:

if (location<(int)weaponInCharacter.size()) {

我可以看到它将 int 位置与矢量中的位置进行比较 武器InCharacter 但是它在代码的这一部分中的 int 和矢量之间做了什么:(int)武器InCharacter.size())

(int)只是将值转换为int的旧 C 样式转换。

这是一个非常常见的成语。size的返回值是 size_t ,它是无符号的。当你尝试将其与已签名的int进行比较时,许多编译器会给出警告。要消除警告,您只需将size_t投射到int,一切就会好起来,只要您知道 size 返回的值适合int。返回值不适合int的情况非常罕见。