Я пишу несколько примеров кода из «Как думать, как компьютерный ученый в C++», и это касается обработки объектов и колод игровых карт. Я столкнулся с этой ситуацией:Сравните с size_t, return int?
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).
Что делать, если у меня когда-либо был достаточно большой вектор?
Вы должны рассмотреть возможность получения другой C++ книгу. Список [хороших вводных книг на C++] (http://stackoverflow.com/questions/388242/the-definitive-c++book-guide-and-list). Я не знаком с «Как думать как компьютерный ученый в C++», но его первый пример имеет «void main()» и использует ``. Это не выглядит многообещающим. –
2010-12-16 04:38:31