STLリンクリストに構造体を取り込むプログラムがあり、リスト上のノード(現在イテレーターを介して使用しているノード)から構造体メンバーを渡そうとしています。私が達成しようとしていることの1つは、移動平均を計算する関数です。構造体にカウントと合計を格納してから出力時に平均を計算するのではなく、構造体にカウントと平均を格納して、平均が再計算された後に数量値を破棄したいと思います。私の構造は次のようになります:
struct mystruct
{
string item;
long avg;
short count;
} data;
it
これらの構造体は、リスト内を移動できるイテレータ、を使用してリストに格納されます。it
リストをトラバースし、平均を計算したいデータのノードと等しい場合、これは平均関数を呼び出す適切な方法でしょうか?
// prior to running the code below, the `count` and `avg` members for the
// struct at iterator location `it` are both 1 and 100 respectively
long qty = 50;
calc_average(it->count, it->avg, qty);
cout << "The current count is " << it->count << endl;
// Outputs 'The current count is 2'
cout << "The current average is " << it->avg << endl;
// Outputs 'The current average is 75'
void calc_average(short &count, long &avg, long quant)
{
avg = ( (avg * count) + quant ) / (count + 1);
count++;
}
これは正しいようですか?STLリストを使用してこれを実装しようとしていますが、独自のリンクリストクラスを実装するよりも混乱しているようです。構造とイテレータが実際にどのように機能するか、そして実際に何がどのように受け渡されているかについて、私は混乱していると思います。コーディングはまだ私にはかなり新しいので、これの多くは学習プロセスです...
ありがとう!