私は並べ替える必要がある私のクラスのポインタの配列を持っています。 (ポインタ/値を切り替える
ITEM *items = new ITEM[set.pathc];
...
bool change = true;
while(change)
{
change = false;
for(i = 0; i < set.pathc-1; i++)
{
if(compare(items+i, items+i+1, set.order, set.order_asc))
{
ITEM temp;
temp = *(items+i);
items[i] = items[i+1];
items[i+1] = temp;
change = true;
}
}
}
だから私のコードを切り替えているだけでポインタ: ソートは
私のコードは次のようである...イム切り替えだけで、クラス、またはクラス全体に参照するか、イムだけでわからない、正しく動作しています私はオブジェクトが割り当てられている場所やオブジェクト全体のアドレスを意味します(プライベート変数のすべてをコピーする場合は、これに "="演算子は必要ありませんか?)
私はちょうど私はそれをはるかに高速になると思うので、私はこの
ITEM *temp
temp = item+i;
item[i] = item+i+1;
item[i+1] = temp;
のようにそれを試してみましたが、それは仕事をdidntのポインタ切り替えたい: -/
(私もコードをコンパイルcouldntの)説明のために事前に感謝:)
私はすでにコードを書き直しましたが、「動的割り当てのオーバーヘッド」と「ITEM * *」を使用しない理由を教えてください。 今、私はこれが好きですが(大きなメモリを割り当てることに問題があります): 'ITEM * * items; items =(ITEM * *)malloc(sizeof(ITEM * *)* set.pathc); for(i = 0; i SetFullPath(); } ' とmemでの並べ替え( - > temp、 - > first、temp-> second)。しかし、私はその遅いと思う。 –
Buksy
通常、新しい/ mallocを使用する動的割り当ては、通常のスタック作成およびコピー操作よりもオーバーヘッドを生成します。たくさんのアイテムを持っていない場合は、操作をあまり並べ替えていないので、コンテナ内のスタックとアイテムのコピー操作を試すことができます。しかし、アイテム数が非常に多く、コンテナが通常は非常にソートされていない場合、ポインタを切り替えることでより良いパフォーマンスが得られます –