0

私は C++ 標準ライブラリを試していて、練習用に一般的なインクリメント演算子を書きたいと思っていました。これが私の試みです。もっと簡単な方法はありますか?std::plus のように動作するようにしたかったのです。しかし、plus は二項演算子であり、generate_n には引数のない関数が必要であるため、plus は使用できません。

これが私の試みです。どんなフィードバックでも大歓迎です。

#include <iostream>
#include <vector>
#include <algorithm>


template<typename T>
class incr {
public:
    incr(const T& startnum = 0) : m_start(startnum) {}

    T operator()() { return m_start++; }

private:
    T m_start;
};

void printme(int i) {
    std::cout << i << " ";
}

int main() {
    int n = 10;
    std::vector<int> sq(n);
    incr<int> i(3);
    std::generate_n(sq.begin(), n, i);
    std::for_each(sq.begin(), sq.end(), printme);
    return 0;
}

更新: 幅広いプラットフォームをサポートするには、C++11 と Boost を除外する必要があります。

4

1 に答える 1

0

演算子のオーバーロードを使用するのはどうですか?

于 2013-03-16T18:25:26.797 に答える