我正在编写“如何像计算机科学家一样用 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++ 中的 vector 上使用“.length()”,而是不得不使用 .size(),它返回(我相信)std::size_type。我想我可以使用 size_t 并摆脱它以避免在不同体系结构上出现问题,正如我一直在阅读的那样,但我想知道我是否返回 i
,但它比整数大, 我会崩溃程序吗?
[在我的问题中进行了更具体的编辑:] 一旦我开始将 vector 用于比卡片更大的东西,我考虑使用 unsigned int 因为编译器不匹配警告,但我觉得返回 unsigned int 或 int 有几个问题:1) int 不会采用足够大的 vector 索引。 2) 返回 unsigned int 不会让我返回 -1。 3) unsigned int 在所有架构上都不等于 size_t(我还在 ARM Cortex-M3 上进行微 Controller 编程)。
如果我有一个足够大的 vector ,我应该怎么做?
最佳答案
从 size_t
转换为 int
不会“崩溃”您的程序,但这是一个糟糕的做法。另一方面,STL 包含 nice find
你正在做的事情的算法。
关于c++ - 与size_t比较,返回int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4457431/