0

次のような値を作成したい: (次の構文を使用する必要があります)。そこで、STL関数のgenerate_nとテンプレート関数であるファンクタクラス「Sequencegenerator」で値を作成するのが目的です。私の問題は、値を返す方法と次の呼び出しに保存する方法がわからないことです。そこに私のコードがあります...どうもありがとう!(演算子 () を使わずに解かなければなりません)

// Numbers from 1 to 10
generate_n(ostream_iterator<int>(cout, " "), 10, SequenceGenerator<int>(1));
cout << endl;
// Numbers from 10 to 1 (descending order)
generate_n(ostream_iterator<int>(cout, " "), 10, SequenceGenerator<int>(10, -1));
cout << endl;
// Numbers from 0 to 5 (increment 0.5)
generate_n(ostream_iterator<double>(cout, " "), 11, SequenceGenerator<double>(0, 0.5));
cout << endl;
// Letters from A to Z
generate_n(ostream_iterator<char>(cout, ""), 26, SequenceGenerator<char>(’A’));
cout << endl;

私のコード:

#include <algorithm>
#include <iterator>
#include <iostream>
#include "SequenceGenerator.h"

using namespace std;

template <typename T>
class SequenceGenerator : public std::unary_function<T,T>
{
public:
    SequenceGenerator(T const start, T const inc):mStart(start),mInc(inc)
    {
        return mStart = mStart + inc;
    }

private:
    T const mInc;
    static T mStart;    //static T mStart
};



int main()
{
    generate_n(ostream_iterator<int>(cout, " "), 10, SequenceGenerator<int>(10,1) );


    return 0;
}
4

1 に答える 1