4 개의 벡터를 선언하고 두 개를 초기화하는 코드 블록이 있습니다. 그런 다음 초기화되지 않은 벡터에 요소를 추가하는 두 개의 for 루프가 있습니다. 그런 다음 마지막으로 한 벡터의 모든 요소를 다른 벡터에 다시 할당합니다.범위 밖의 벡터 아래쪽 문제
그러나 이러한 작업을 수행하는 동안 "범위 밖의 벡터 첨자"오류가 발생합니다. 내가 잘못하고있는 벡터에서 어떤 작업을하고 있습니까?
내 코드 :
for (int i=1; i<=K.size(); i++)
벡터 인덱스는 0에서 시작하고 가장 높은 인덱스 K.size()-1
입니다 :
int main()
{
std::vector<int> K;
K.insert(K.begin(),0);
std::vector<int> tempK;
std::vector<int> S;
S.insert(S.begin(),0);
std::vector<int> tempS;
int n;
float exptd = 0;
float SD = 0;
std::cout<<"How many steps: ";
std::cin >> n;
for (int j= 1; j<=n; j++) {
for (int i=1; i<=K.size(); i++) {
if (K[i] == 0) {
tempK.push_back(4); tempK.push_back(6);
tempS.push_back(K[i]+4); tempS.push_back(K[i] +6);
}
else if (K[i] == 1) { tempK.push_back(6); tempK.push_back(8);
tempS.push_back(K[i]+6); tempS.push_back(K[i] +8);
}
else if (K[i] == 2) {
tempK.push_back(7); tempK.push_back(9);
tempS.push_back(K[i]+7); tempS.push_back(K[i] +9);
}
else if (K[i] == 3) {
tempK.push_back(4); tempK.push_back(8);
tempS.push_back(K[i]+4); tempS.push_back(K[i] +8);
}
else if (K[i] == 4) {
tempK.push_back(3); tempK.push_back(9); tempK.push_back(0);
tempS.push_back(K[i]+3); tempS.push_back(K[i] +9);
tempS.push_back(K[i] +0);
}
else if (K[i] == 6) {
tempK.push_back(1); tempK.push_back(7); tempK.push_back(0);
tempS.push_back(K[i]+1); tempS.push_back(K[i] +7);
tempS.push_back(K[i] +0);
}
else if (K[i] == 7) {
tempK.push_back(2); tempK.push_back(6);
tempS.push_back(K[i]+2); tempS.push_back(K[i] +6);
}
else if (K[i] == 8) {
tempK.push_back(1); tempK.push_back(3);
tempS.push_back(K[i]+1); tempS.push_back(K[i] +3);
}
else if (K[i] == 9) {
tempK.push_back(2); tempK.push_back(4);
tempS.push_back(K[i]+2); tempS.push_back(K[i] +4);
}
}
S = tempS;
tempS.clear();
tempS.resize(100);
K = tempK;
tempK.clear();
tempK.resize(100);
}
}
인덱스는'크기-1 '에'0 '에서 이동합니다. 'for()'루프는'1'에서'size'로 갈 것입니다. 따라서 마지막 반복은 벡터 외부로 액세스합니다. – Barmar