我正在编写一些代码示例来自"如何像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;
}
Run Code Online (Sandbox Code Playgroud)
我不能像在文本中那样在Visual Studio 2010中的C++中使用".length()",而是必须使用返回(我相信)std :: size_type的.size().我想我可以使用size_t并躲开它,以避免不同架构上的问题,正如我一直在阅读,但我想知道我是否返回i
,但它比一个整数大,我会崩溃程序吗?
[编辑在我的问题中更具体:]一旦我开始使用向量比卡更大的东西,我考虑使用unsigned int因为编译器不匹配警告,但我觉得返回unsigned int或int有一些问题:1) int不会采用足够大的向量索引.2)返回unsigned int不会让我返回-1.3)unsigned int在所有架构上都不等于size_t(我也在ARM Cortex-M3上进行微控制器编程).
如果我有足够大的矢量,我该怎么办?