2016-07-16 6 views
-2

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); 
    } 
} 
+0

인덱스는'크기-1 '에'0 '에서 이동합니다. 'for()'루프는'1'에서'size'로 갈 것입니다. 따라서 마지막 반복은 벡터 외부로 액세스합니다. – Barmar

답변

0

이 문제입니다. i이에 도달하면 K[i]은 벡터 외부를 액세스합니다.

그것은해야한다 :

for (int i = 0; i < K.size(); i++) 
+0

답장을 보내 주셔서 감사 합니다만 오류가 계속 발생합니다 .. – David

+0

어떤 라인에서 오류가 발생합니까? – Barmar

+0

잘 작동합니다. 감사합니다. Bamar – David

관련 문제