現在、高速化のために Python コードのブロックを C++ に変換中です。これはそのままのコードです (注、qsort は私が自分で書いたクイック ソートです):
base = sys.stdin.readline().split()
n = int(base[0])
m = int(base[1])
mult = m * 10
count = 1
output = []
while count != (n+1):
hold = output + []
if (n - count) + 1 >= mult:
rev = mult
else:
rev = n - count + 1
while rev != 0:
temp = sys.stdin.readline().split()
hold.append((int(temp[0])*count,temp[1], count))
count += 1
rev -= 1
hold = qSort(hold,len(hold))
output = hold[:m]
本質的に、私は数行の入力を取り、新しいアイテムと既存の出力を保持する hold と呼ばれる一時リストにそれらを追加し、クイックソートはそれらの値に従ってアイテムをソートします (最初の要素/整数として与えられます追加されたタプル)。Python では、タプルのリストをホールドおよび出力として保持するだけなので、このプロセスは非常に単純です。各タプルには、(1) ソートに使用される整数、(2) 文字列、(3) 整数の 3 つの項目が含まれます。これを C++ に変換する最善の方法は何かと考えていました。3 つの個別の配列を維持し、それらすべてを同時に更新する必要がありますか、またはリストとタプル クラスを使用する必要があります。(コードを可能な限り高速に実行しようとしています)。また、使用する方法を決定した後、ホールドと出力の間の相互作用をどのように最適に変換できますか? 常に効果的にするにはどうすればよいですかループの開始時に保持を更新し、最後に出力を効果的に変更しますか?
どんな助けでも大歓迎です!乾杯、仲間!