0

私は C++ が初めてで、使用したいvector <unsigned int*> 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) に同じ値を出力したかったのですが、A) tmpV2[1]: 1 B) tmpV2[1]: 5 を出力することです。

このポインターのベクトルでさまざまな要素を処理できるようにしたいと考えています。なぜこれが起こっているのかは大まかに理解できますが、解決策を見つけることができませんでした。

使用したくないことに注意してください:vector < vector <unsigned int> >

4

1 に答える 1

0

ベクトルのインデックス a のポインターが指す値をインクリメントしたためです。

vec

印刷後に再印刷する場合

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

どちらも同じ結果を示します

あなたがこれまでやってきたことは、

整数ポインターのベクトルがあります

この配列を初期化しました

ベクトルの 0 番目のインデックスを指す一時的なポインターが 1 つありました。

このポインターを使用して、vec の 2 番目のインデックスが指す値を出力しました。

その後、ポインターのベクトルが指すすべての値を操作しました (4 ずつ増加)

ここで、ベクトルのインデックス 1 が指す値を再び出力しています。

どちらも同じですが、操作した値を印刷し、操作後に再度印刷するだけです。最後に *vec[1] と tmpV2[1] の両方を再印刷すると、両方が同じであることがわかります。

于 2013-07-28T11:52:27.300 に答える