나는 값 (복식을 사용하여 테스트) 임의 템플릿 벡터를 채우기 위해 기능을 사용하고 있습니다 :벡터 첨자가 범위를 벗어남 (하지만 정말)
기능이 벡터에 메인에서 호출template <typename T>
void setList(vector<T> & theList)
{
srand(time(NULL));
int howMany, max, min;
cout << "How many items should be generated in the list? ";
cin >> howMany;
cin.ignore();
cout << "Max value of list? ";
cin >> max;
cin.ignore();
cout << "Min value of list? ";
cin >> min;
cin.ignore();
theList.resize(howMany);
T randValue;
for (int i = 0; i < howMany; ++i)
{
randValue = (((double) rand()/(double) RAND_MAX) * (max - min)) + min;
theList[i] = randValue;
}
}
: 내가 첨자 howMany-2에 도달하면
vector<double> listA;
setList(listA);
는 상관없이 어떤 값 "howMany"나는 범위 에러에서 첨자를 받고 없습니다입니다.
디버거를 밟으면 내 색인이 아래 첨자 범위 내에 있습니다. 사용자 howMany, 10 들어가면
예를 들어, 루프 오류가 발생
theList[8] = randValue;
입력하려고 할 때.
아이디어가 있으십니까?
'list'도 STD 클래스이기 때문에 가능합니까? 그리고 왜 정의 메서드에 의해 벡터가 정수를 보유하고 있기 때문에 Template 메서드를 사용합니까? – NirMH
@NirMH, 그건 내 첫 번째 직관 이었지만, 아무것도 변경되지 않았습니다.리스트는리스트 오브젝트가 아닌 변수 이름으로 정확하게 식별됩니다. 나는 여전히 동일한 오류를 확인하고 코드를 다시 작성했습니다. – tloveless
어떤 오류가 있습니까? 당신은'list'와'i'의 크기를 루프에 기록 할 수 있습니까? –