parallel_for
template<class RanIt,class F> void parallel_for(RanIt begin,RanIt end,const F &f,int grain)
template<class G,class F> void parallel_for(const Vector<G> &X, const F &f,int grain)
template<class G,class F> void parallel_for(const Vector<G> &X, const F &f)
template<class G,class F> void parallel_for(const Matrix<G> &X, const F &f,int grain)
template<class G,class F> void parallel_for(const Matrix<G> &X, const F &f)
Computes parallel iteration of a function over a range of values
Parameters
| begin | Integer or random access iterator addressing the position of the first element in the range to be operated on. |
| end | Integer or random access iterator addressing the position one past the final element in the range operated on. |
| grain | Number of iteration for a reasonable chunk to deal out to a thread. If no value given, the range is subdivided in num_threads() chunks. |
| X | Range to be operated on. |
| f | User-defined function object that is applied on subranges. |
Remarks
The function object must model the following requirements:
| Copy constructor | F::F(const F &) |
| Destructor | F::~F(const F &) |
| Apply on subranges | template<class RanIt> F::operator()(RanIt,RanIt) const |
Example
template<class V>
struct fill_function
{
V val;
fill_function(const V &v) : val(v) {}
template<class It> void operator()(It begin, It end) const { fill(begin,end,val); }
};
template<class RanIt,class T>
void parallel_fill(RanIt begin, RanIt end, const T &val, int grain=10000)
{
gmt::parallel_for(X.begin(),X.end(), fill_function<T>(val),grain);
}
See Also

