所有这些都源于我在尝试以下行时编写了一条编译器警告消息(C4267):
const unsigned int nSize = m_vecSomeVec.size();
size()
返回size_t虽然typedef为unsigned int,但实际上并不是unsigned int.我认为这与64位可移植性问题有关,但有人可以为我解释一下吗?(我不只是想禁用64位警告.)
这取决于实施.std::size_t
例如,具有最小的所需尺寸.但没有上限.要避免这种情况,请始终使用正确的typedef:
const std::vector::size_type nSize = m_vecSomeVec.size();
那么你将永远保持安全.