Я пишу несколько примеров кода из книги «Как думать как компьютерный ученый на 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;
}
Я не мог использовать ".length ()" для вектора на C ++ в Visual Studio 2010, как в тексте, и вместо этого должен был использовать. size (), который возвращает (я считаю) std :: size_type. Я подумал, что могу использовать size_t и избежать проблем на разных архитектурах, как я читал, но мне интересно, верну ли я i
, но это больше, чем целое число, я могу вылететь из программы?
[Отредактировано, чтобы быть более конкретным в моем вопросе:] Как только я начал использовать векторы для более крупных объектов, чем карты, я подумал об использовании unsigned int из-за предупреждения о несоответствии компилятора, но я чувствую, что возвращение unsigned int или int имеет несколько проблем: 1) int не будет принимать достаточно большой векторный индекс. 2) возвращение unsigned int не позволит мне вернуть -1. 3) unsigned int не равно size_t на всех архитектурах (я также занимаюсь программированием микроконтроллеров на ARM Cortex-M3).
Что мне делать, если у меня когда-либо будет достаточно большой вектор?