我正在写一些来自“如何像 C++ 中的计算机科学家一样思考”的代码示例,这个示例是关于处理扑克牌类型的对象和套牌。我正面临这种情况:
int Card::find(const std::vector<Card>& deck) const {
size_t deckSize = deck.size();
for (size_t i=0; i<deckSize; i++)
if (equals(*this, deck[i])) return i;
return -1;
}
我不能像在文本中那样在 Visual Studio 2010 中的 C++ 中的向量上使用“.length()”,而是必须使用返回(我相信)std::size_type 的 .size()。我想我可以使用 size_t 并摆脱它,以避免在不同架构上出现问题,正如我一直在阅读的那样,但我想知道如果我 return i
,但它大于一个整数,我会崩溃程序吗?
[在我的问题中编辑得更具体:]一旦我开始将向量用于比卡片更大的东西,我考虑使用 unsigned int 因为编译器不匹配警告,但我觉得返回 unsigned int 或 int 有一些问题:1) int 不会采用足够大的向量索引。2) 返回 unsigned int 不会让我返回 -1。3) unsigned int 在所有架构上都不等于 size_t (我也在 ARM Cortex-M3 上进行微控制器编程)。
如果我有足够大的向量,我该怎么办?