By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,171 Members | 1,037 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,171 IT Pros & Developers. It's quick & easy.

passing a transform as a function parameter?

P: n/a
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
Jul 22 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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
Jul 22 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.