Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   passing a transform as a function parameter? (http://www.velocityreviews.com/forums/t285010-passing-a-transform-as-a-function-parameter.html)

 Steven T. Hatton 08-13-2004 10:18 AM

passing a transform as a function parameter?

If I do:

typedef vector<size_t> v_T;

pair<v_T, v_T> b_T;

b_T bounds(v_T(n), v_T(n)); // if that doesn't work
// std::make_pair(v_T(n), v_T(n));
b_T diff_v(n);
void populate_bounds(&bounds); // all bounds.first[i] <= bounds.second[i]

If I then:

transform(bounds.first.begin(),
bounds.first.end(),
bounds.second.begin(),
diff_v.begin(),
minus<size_t>());

diff_t should get filled with

diff_v[i] == bounds.second[i] - bounds.first[i]

I can then pass diff_v to a function which takes a const &v_T argument. Is
there a way to iliminate diff_v, and simply feed the transform to the
function taking &v_T?

--
STH
Hatton's Law: "There is only One inviolable Law"
KDevelop: http://www.kdevelop.org SuSE: http://www.suse.com
Mozilla: http://www.mozilla.org

 Victor Bazarov 08-13-2004 01:29 PM

Re: passing a transform as a function parameter?

Steven T. Hatton wrote:
> If I do:
>
> typedef vector<size_t> v_T;
>
> pair<v_T, v_T> b_T;

Did you mean

typedef std::pair<v_T,v_T> b_T;

?

>
> b_T bounds(v_T(n), v_T(n)); // if that doesn't work
> // std::make_pair(v_T(n), v_T(n));
> b_T diff_v(n);

I don't think you can initialise a pair this way. Did you mean

v_T diff_v(n);

??

> void populate_bounds(&bounds); // all bounds.first[i] <= bounds.second[i]
>
> If I then:
>
> transform(bounds.first.begin(),
> bounds.first.end(),
> bounds.second.begin(),
> diff_v.begin(),
> minus<size_t>());
>
> diff_t should get filled with
>
> diff_v[i] == bounds.second[i] - bounds.first[i]
>
> I can then pass diff_v to a function which takes a const &v_T argument. Is
> there a way to iliminate diff_v, and simply feed the transform to the
> function taking &v_T?

Since you didn't clarify how v_T contains the bounds, I would have to dive
into a pool of assumptions, and it's usually wrong. Perhaps you could be
more specific. Otherwise, the generic answer is, "yes, you can do that,
you only need to correctly define the iterator and the functor".

Victor

 All times are GMT. The time now is 07:58 PM.