我正在试验 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。