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

c++ and vector

P: n/a
Hello everyone.

I have a question about using vector.

Given a vector<intwith a lot of integers stored inside, I would like
to delete any elements bigger than some value, say x. Is it any
efficient way to do that?

Thanks.

Sep 20 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Wing wrote:
Hello everyone.

I have a question about using vector.

Given a vector<intwith a lot of integers stored inside, I would like
to delete any elements bigger than some value, say x. Is it any
efficient way to do that?
#include<vector>
#include<iostream>
#include<iterator>
#include<functional>
#include<algorithm>

using namespace std;

int main ()
{
vector<intV;
V.push_back (2);
V.push_back (7);
V.push_back (5);
V.push_back (3);
V.push_back (9);
V.push_back (1);

// Print the vector.
copy (V.begin(), V.end(), ostream_iterator<int>(cout, " "));
cout << endl;

// Invoke remove_if: This method will move all elements that make
// the predicate bind2nd (greater<int>(), 5) true to the front of
// the vector. The return value of this invocation is the first
// element that doesn't belong to the controlled sequence (the
// vector's size is unchanged after the call). These elements are
// deleted by the next call to erase (). Although this looks a bit
// confusing, this feature can be rather handy: This way unneeded
// re-allocations are avoided since the vector's size has
// decreased.
vector<int>::iterator new_end =
remove_if(V.begin(), V.end(),
bind2nd (greater<int>(), 5));

V.erase(new_end, V.end());

// Print the vector again.
copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));

return 0;
}

Regards,
Stuart
Sep 20 '06 #2

P: n/a
Stuart Redmann wrote:
Wing wrote:
>Hello everyone.

I have a question about using vector.

Given a vector<intwith a lot of integers stored inside, I would like
to delete any elements bigger than some value, say x. Is it any
efficient way to do that?


#include<vector>
#include<iostream>
#include<iterator>
#include<functional>
#include<algorithm>

using namespace std;

int main ()
{
vector<intV;
V.push_back (2);
V.push_back (7);
V.push_back (5);
V.push_back (3);
V.push_back (9);
V.push_back (1);

// Print the vector.
copy (V.begin(), V.end(), ostream_iterator<int>(cout, " "));
cout << endl;

// Invoke remove_if: This method will move all elements that make
// the predicate bind2nd (greater<int>(), 5) true to the front of
// the vector. The return value of this invocation is the first
// element that doesn't belong to the controlled sequence (the
// vector's size is unchanged after the call). These elements are
// deleted by the next call to erase (). Although this looks a bit
// confusing, this feature can be rather handy: This way unneeded
// re-allocations are avoided since the vector's size has
Sorry for the typo:
// decreased.
This should be replaced by
// not decreased.
vector<int>::iterator new_end =
remove_if(V.begin(), V.end(),
bind2nd (greater<int>(), 5));

V.erase(new_end, V.end());

// Print the vector again.
copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));

return 0;
}

Regards,
Stuart
Sep 20 '06 #3

P: n/a
Wing wrote:
Hello everyone.

I have a question about using vector.

Given a vector<intwith a lot of integers stored inside, I would like
to delete any elements bigger than some value, say x. Is it any
efficient way to do that?
try remove_if
>
Thanks.
Sep 20 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.