1

私の問題は、ベクトルの内容を取得するために operator[] を使用しても、ベクトルは常にサイズ関数を呼び出していることです (私のプロファイリング ツールと時間測定によると)。私の C++ アプリケーションは非常にタイム クリティカル (0.1 ミリ秒未満) であるため、これを配列に変換したほうがよいと考えましたが、これまでのところわかりませんでした。実際のベクトルは次のようになります。

std::vector<std::pair<double*,std::pair<double*,int*>>>
4

2 に答える 2

3

次のように、配列の最初の要素へのポインターに変換できます。

pair<double *, pair<double *, int *> > *ar = &v[0];

C++11v.data()の代わりに使用します。&v[0]

size()それとは関係なく、私は関数がかなりの時間を費やしていることに少し懐疑的です。これは通常、フィールドを返すか、2 つのポインター フィールドの差を返すインライン関数です。

于 2012-11-23T09:49:42.190 に答える