c++ - 与size_t比较,返回int?

标签 c++ object vector int size-t

我正在编写“如何像计算机科学家一样用 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/

相关文章:

c++ 11 - 将成员函数传递给线程给出 : no overloaded function takes 2 arguments

c++ - boost::algorithm::contains std::vector<long> & long 值

C++2a 合约编程和编译器

c++ - 使用流初始化 C++ 对象

c++ - 从 vector 中获取(下一个)最大对象

c++ - 操作溢出不起作用c++

javascript - 在 React 组件的多次嵌套对象上使用 ES6 .map()

java - 对象使用另一个Java类

java - 在 Vector 中插入元素时出现错误 java.lang.NullPointerException

c++ - 如何找到要从 vector 中删除的值,并从辅助 vector 中删除相同的位置?