2013-07-27 57 views
0

我在C新型++,我想用vector <unsigned int*> vec;我如何使用`矢量<無符號整數*> VEC;`正確

我試試這個代碼:

vector <unsigned int*> vec; 
unsigned int* tmpV= new unsigned int[4]; 
    for(unsigned int i=0; i<4;i++){ 
     tmpV[i]=i; 
    } 

vec.push_back(tmpV); 
unsigned int* tmpV2=vec.at(0); 
cout<<"A) tmpV2[1]: "<<tmpV2[1] <<endl; 
cout<<"vec.size(): "<<vec.size()<<endl; 

    for(unsigned int i=0; i<4;i++){ 
     tmpV[i]=i+4; 

    } 
vec.push_back(tmpV); 
tmpV2=vec.at(0); 
cout<<"vec.size(): "<<vec.size()<<endl; 
cout<<"B) tmpV2[1]: "<<tmpV2[1]<<endl; 

問題她是我想輸出A中的相同的值)和B) 但它OUPUTS A)tmpV2 [1]:1個 B)tmpV2 [1]:5

我想能夠處理在這個不同的元素指針的向量。 我大致可以理解爲什麼會這樣,但我找不到解決方案。

有想法,我不希望使用:vector < vector <unsigned int> >

回答

0

這是因爲你在遞增矢量由指針在索引指向的值

VEC

如果您在打印後再次打印

valuecout<<"B) tmpV2[1]: "<<tmpV2[1]<<endl 
valuecout<<"B) tmpV2[1]: "<<vec[1] <<endl 

都將顯示同樣的結果

你已經完成的工作是什麼

你有

你初始化數組

你有一個臨時指針指向零整數指針的向量矢量的索引

現在使用這個指針打印vec的第二個索引指向的值

之後,你操縱由指針載體(由4遞增的)

您現在再次打印由矢量

的索引1所指向的值所指向的所有值兩者都是相同的唯一事情是你打印的值操縱它並在操作後再次打印。如果您在最後再次打印* vec [1]和tmpV2 [1],您會發現兩者都是相同的。

相關問題