2016-08-12 2 views
-2

저는 숙제를위한 작은 C++ 프로그램을 만들고 있습니다. 나는 2D 벡터를 채우려하고 있지만 matriz [iA] [iB] = iNum; 그것은 나에게C++의 함수에서 값을 삽입하려고 할 때 2D 벡터에 값을 삽입 할 수없는 이유는 무엇입니까?

#include <iostream> 
#include <algorithm> 
#include <math.h> 
#include <fstream> 
#include <stdio.h> 
#include <limits.h> 
#include <string.h> 
#include <iomanip> 
#include <set> 
#include <vector> 
#include <map> 



using namespace std; 

void popularMatriz(int iTamano, vector<vector<int>> *matriz){ 

    for(int iA=0; iA<iTamano; iA++){ 
     for(int iB=0; iB>iTamano; iB++){ 
      int iNum; 
      scanf("%d", &iNum); 
      matriz[iA][iB]=iNum; 
     } 
    } 
} 

int main(){ 

    int iTamano; 

    scanf("%d", &iTamano); 

    vector<vector<int>> matriz(iTamano, vector<int>(iTamano)); 
    matriz[2][2]=5; 

    popularMatriz(iTamano, &matriz); 

    return 0; 
} 
+0

변경없이 전화, 의미'에 대한 참조로 matriz'. 덕분에 – 0x499602D2

답변

1

matriz에 대한 포인터를 전달 중입니다. 그래서 잘못 사용하는 것입니다.

matriz[iA][iB]=iNum; 

나는 그것을 참고 자료로 전달할 것을 제안합니다. 내가 popularMatriz()

void popularMatriz(int iTamano, vector<vector<int>> & matriz) 

을 정의하고 &

popularMatriz(iTamano, matriz); 
+0

나는 그것을 시도하고 그것을 할 때 그것을 컴파일하지만 내가 그것을 실행하면 기능이 실행되지 않습니다. 그것을 건너 뜁니다. 내가 무엇을 할 수 있을지? –

+0

@EduardoDeLaGarza [개발 환경의 디버거] (https://en.wikipedia.org/wiki/Debugger)를 실행하고 기능을 단계별로 실행하십시오. 당신이 그것을 보았을 때 오타를 당황하게 할 것입니다. – user4581301

+0

@EduardoDeLaGarza -이 줄이'for (int iB = 0; iB> iTamano; iB ++)라고 가정합니다. iB max66

1

당신은 matriz에 대한 포인터를 복용하고 " '연산자 ='는 아무 짝을"오류를 제공하지 않습니다. 대신 다음을 수행하십시오.

(*matriz)[iA][iB]=iNum; 
+0

. 나는 그것을 시도하고 그것을 할 때 그것을 무시하고 기능을 무시한다. 내가 무엇을 할 수 있을지? –

+1

'for (int iB = 0; iB> iTamano; iB ++)에 실수가 있습니다. 'iB grigor

+0

감사합니다. –

관련 문제