如何编写用于算法的C ++ stdlib样式增量函数

时间:2013-03-16 18:23:26

标签: c++ std

我正在试验C ++标准库,并希望为实践编写一个通用增量运算符。以下是我的尝试。有更简单的方法吗?我希望它有点像std :: plus。但是我不能使用plus,因为它是一个二元运算符而generate_n需要一个没有参数的函数。

这是我的尝试。任何反馈都会非常感激。

#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。

1 个答案:

答案 0 :(得分:0)

如何使用operator overloading