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

时间:2014-04-07 19:21:09

标签: c++ vector int

void Player::removeWeapon(int location)
{
    if (location<(int)weaponInCharacter.size()) {
        weaponInCharacter.erase(weaponInCharacter.begin() + location);
    }
}

我不确定以下一行:

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

我可以看到它将int位置与向量weaponInCharacter中的位置进行比较,但是在这部分代码中int和vector之间的做法是什么:(int)weaponInCharacter.size())

1 个答案:

答案 0 :(得分:2)

(int)只是int值的旧C样式广播。

这是一个非常常见的习语。 size的返回值为size_t,为无符号。当您尝试将此与已签名的int进行比较时,许多编译器会发出警告。要消除警告,您只需将size_t转换为int,只要您知道size返回的值适合int,一切就会好起来的。 }。如果返回值不适合int,那将是极少见的。