【发布时间】:2016-06-12 15:27:02
【问题描述】:
目标:创建一个向量。使用 remove_if 就可以了
#include<iostream>
#include<vector>
#include<iterator>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
int negative_count=0;
vector<int> v = { 2, -1, -3, 5, -5, 0, 7 };
copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
cout << endl;
vector<int>::iterator new_it=remove_if(v.begin(), v.end(), bind2nd(greater<int>(), -1));
v.erase(new_it);
copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
cout << endl;
}
remove_if 条件是删除大于 -1 的数字。 为什么它显示 -5 两次?根据我的说法, remove_if 之后的输出应该是 -1 -3 -5 5 0 7 。 另外,如果我使用
V.erase(new_int,v.end())
输出很好:-1 -3 -5
【问题讨论】:
-
说真的,毕竟,您有问题吗?阅读手册。