這是一個超級簡單的問題,但我似乎無法看到出了什麼問題。這段代碼做的是計算pixID向量中元素的數量,並將該總和返回到方陣矩陣PtP中的對角線元素。然而,即使「我」在第一循環讀取:0,5,10,15爲元素的輸出是這樣的:C++元素訪問失敗?
1,0,0,0,
0,0,3,0,
0,0,0,0,
0,3,0,0,
,而不是所期望的:
1,0,0,0,
0,3,0,0,
0,0,2,0,
0,0,0,2,
任何想法在這裏?
double where(std::vector<double> &vec,unsigned int &v){
double count = 0;
int val;
for(std::vector<double>::iterator it = vec.begin();
it != vec.end();
++it){
if(*it == val){
count++;
}
}
return count;
}
int main(){
unsigned int pixSide = 2;
int id;
std::vector<double> pixID {1,1,2,3,0,2,1,3};
std::vector<double> PtP (pixSide*pixSide);
for(unsigned int i=0;i<pixSide*pixSide;i++){
id = i*pixSide*pixSide + i;
std::cout << id << std::endl;
PtP[id] = where(pixID,i);
}
for(int i=0;i<pixSide*pixSide;i++){
for(int j=0;j<pixSide*pixSide;j++){
std::cout << int(PtP[i*pixSide + j]) << ',';
if(j==pixSide*pixSide-1){
std::cout << std::endl;
}
}
}
}
你是怎麼用'std :: vector pixID {1,1,2,3,0,2,1,3};''編譯這段代碼的?這是一個編譯時錯誤 –
Nima
2013-03-24 22:24:39
@Nima最有可能與一個支持C++ 11的編譯器 – PlasmaHH 2013-03-24 22:25:22
您是否嘗試過使用調試器單步執行代碼?或者,在每個步驟輸出值並與您在該步驟期望的結果進行比較呢?簡而言之:您是否嘗試過調試代碼? – PlasmaHH 2013-03-24 22:26:09