h*****g 发帖数: 944 | 1 用remove_if?
remove_if里的那个comparator怎么写? | s****i 发帖数: 16 | | l*****g 发帖数: 685 | 3 为什么用remove_if? remove_if 会破坏原来的vector. 应该用 find_if 比较好
最简单的:
bool greaterThan50(int num)
{
return (num > 50);
}
find_if (v.begin(), v.end(), greaterThan50);
稍微改进一点:
template
bool greaterThanInt(T const &num)
{
return (T > i); // type T should be comparable to Int.
}
find_if(v.begin(), v.end(), greaterThan);
更灵活一点:
find_if(v.begin(), v.end(), bind2nd(Greater(), 50));
【在 h*****g 的大作中提到】 : 用remove_if? : remove_if里的那个comparator怎么写?
| z****e 发帖数: 2024 | 4 这个也太扯了。还“稍微改进点”。?
【在 l*****g 的大作中提到】 : 为什么用remove_if? remove_if 会破坏原来的vector. 应该用 find_if 比较好 : 最简单的: : bool greaterThan50(int num) : { : return (num > 50); : } : find_if (v.begin(), v.end(), greaterThan50); : 稍微改进一点: : template : bool greaterThanInt(T const &num)
| o*******p 发帖数: 722 | 5 bind is more general than bind2nd. You don't need to define your own
function.
vector myvector;
for (int i=1; i<20; i++) myvector.push_back(i*10);
for (vector::iterator results = myvector.begin(); results != myvector.
end(); results++)
{
results = find_if(results, myvector.end(), bind(std::greater(), _1,
50));
cout << *results <
}
【在 h*****g 的大作中提到】 : 用remove_if? : remove_if里的那个comparator怎么写?
| l*****g 发帖数: 685 | 6 扯什么扯,这不是中新版军版,想踩人就别到这儿来
我也就按我的理解解答一下,不是标准答案,也不排除是错的;所以谁有更好的建议
就欢迎说出来,别故作高深装。
【在 z****e 的大作中提到】 : 这个也太扯了。还“稍微改进点”。?
|
|