2016-08-12 16 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 iTamano'(格雷戈指出的) – max66

1

您正在指向matriz。改爲:

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

謝謝。我嘗試過,但是當我這樣做並運行它時,它會忽略該功能並跳過它。我能做什麼? –

+1

你在'for(int iB = 0; iB> iTamano; iB ++)'中有個錯誤。應該是'iB grigor

+0

謝謝,不能相信我沒有看到。 –

相關問題