"컴퓨터 과학자처럼 생각하는 법"에서 몇 가지 코드 예제를 작성하고 있습니다.이 예제는 게임 카드 유형의 객체와 데크를 처리하는 방법입니다.size_t와 비교하여 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;
}
내가 (텍스트와 같이 비주얼 스튜디오 2010의 C++에서 벡터의 ".length()"를 사용하고, 대신 크기는을 사용했다 없습니다) 반환 :이 상황에 직면하고있어 (나는) std :: size_type을 믿는다. 나는 size_t를 사용하고 다른 아키텍쳐에서 문제를 피하기 위해 내가 읽었을 때와 같이 생각했다. 그러나 내가 i
을 돌려 주는지 궁금해하는데, 정수보다 크다면, 나는 프로그램을 충돌시킬 것인가?
일단 카드보다 큰 것을 벡터로 사용하기 시작하면 컴파일러 불일치 경고로 인해 부호없는 int를 사용하는 것이 고려되었지만 서명되지 않은 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()'을 가지고 있고' '을 사용합니다. 그것은 유망 해 보이지 않습니다. –