簡體   English   中英

如何編寫用於算法的C ++ stdlib樣式增量函數

[英]How to write a C++ stdlib style increment function for use in algorithms

我正在嘗試使用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。

如何使用運算符重載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM