j*****u 发帖数: 186 | 1 下面程序来自于essential C++ 3.6节,给定一个数组,输出比某个数小的所以元素。
main函数中用了back_inserter,按道理是不是应该include iterator头文件和
using std::back_inserter? 但是为什么把这两句注释掉程序也能跑呢?谢谢。
===================================================================
#include
#include
#include
#include
#include
//#include
using std::vector;
using std::cout;
using std::endl;
using std::less;
//using std::back_inserter;
template
ElemeType, typename Comp>
OutputIterator filter(InputIterator first, InputIterator last,
OutputIterator at, const ElemeType &filter_value, Comp pred )
{
while ( (first=find_if(first, last, bind2nd(pred, filter_value))) !=
last )
{
*at++ = *first++;
}
return at;
}
int main()
{
const int elem_size = 8;
int ia[elem_size] = {12, 8 ,43, 0, 6, 21, 3, 7};
vector ivec(ia, ia+elem_size);
int filter_value = 10;
vector ivec2;
filter(ivec.begin(), ivec.end(), back_inserter(ivec2), filter_value,
less() );
for ( vector::iterator It = ivec2.begin(); It != ivec2.end(); It++ )
cout << *It << " ";
cout << endl;
} | j*****u 发帖数: 186 | 2 下面程序来自于essential C++ 3.6节,给定一个数组,输出比某个数小的所以元素。
main函数中用了back_inserter,按道理是不是应该include iterator头文件和
using std::back_inserter? 但是为什么把这两句注释掉程序也能跑呢?谢谢。
===================================================================
#include
#include
#include
#include
#include
//#include
using std::vector;
using std::cout;
using std::endl;
using std::less;
//using std::back_inserter;
template
ElemeType, typename Comp>
OutputIterator filter(InputIterator first, InputIterator last,
OutputIterator at, const ElemeType &filter_value, Comp pred )
{
while ( (first=find_if(first, last, bind2nd(pred, filter_value))) !=
last )
{
*at++ = *first++;
}
return at;
}
int main()
{
const int elem_size = 8;
int ia[elem_size] = {12, 8 ,43, 0, 6, 21, 3, 7};
vector ivec(ia, ia+elem_size);
int filter_value = 10;
vector ivec2;
filter(ivec.begin(), ivec.end(), back_inserter(ivec2), filter_value,
less() );
for ( vector::iterator It = ivec2.begin(); It != ivec2.end(); It++ )
cout << *It << " ";
cout << endl;
} | r****t 发帖数: 10904 | 3 algorithm 里面最终 include 了 stl_iterator*.h,
Koenig lookup.(mentioned in primer)
【在 j*****u 的大作中提到】 : 下面程序来自于essential C++ 3.6节,给定一个数组,输出比某个数小的所以元素。 : main函数中用了back_inserter,按道理是不是应该include iterator头文件和 : using std::back_inserter? 但是为什么把这两句注释掉程序也能跑呢?谢谢。 : =================================================================== : #include : #include : #include : #include : #include : //#include
|
|