如若使用find返回的结果显示要查找的东西在列表中的位置
如果使用find返回的结果显示要查找的东西在列表中的位置?
题目是:
利用find()来判断列表中是否含有元素27,如果有则输出它的位置。有什么其他的更好的方法么?别用太高级的模板算法,前面基本上没有提到几个模板算法。但是前面好像提到让读者自己去搜索资料了,所以用更高级模板算法可能也不算犯规。
#include "../../_h_file_/std_lib_facilities.h"《C++程序设计原理与实践》第20章的简单练习第八题。
namespace My{
template< class Lter1, class Lter2 >
Lter2 copy( Lter1 f1, Lter1 e1, Lter2 f2 )
{
if( f1 == e1 )
return f2;
while( f1 != e1 ){
*f2 = *f1;
++f1;
++f2;
}
return f2;
}
};
int main()
{
int a1[ 10 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vector< int > v1( a1, a1 + 10 );
list< int > l1( a1, a1 + 10 );
int a2[ 10 ];
for( int i = 0; i < 10; ++i )
a2[ i ] = a1[ i ];
vector< int > v2( v1 );
list< int > l2( l1 );
list< int >::iterator p_l2 = l2.begin();
for( int i = 0; i < 10; ++i ){
a2[ i ] += 2;
v2[ i ] += 3;
*p_l2 += 5;
++p_l2;
}
My::copy( a2, a2 + 10, v2.begin() );
My::copy( l2.begin(), l2.end(), a2 );
vector< int >::iterator p_v2_find = find( v2.begin(), v2.end(), 3 );
if( p_v2_find != v2.end() )
cout << p_v2_find - v2.begin() << endl;
else
cout << "not found" << endl;
list< int >::iterator p_l2_find = find( l2.begin(), l2.end(), 27 );
if( p_l2_find != l2.end() ){ //这个地方,感觉我写的这段代码很丑陋。
int i = 0;
for( ; p_l2_find != l2.begin(); ++i, --p_l2_find );
cout << i << endl;
}
else
cout << "not found" << endl;
keep_window_open();
return 0;
}
题目是:
利用find()来判断列表中是否含有元素27,如果有则输出它的位置。有什么其他的更好的方法么?别用太高级的模板算法,前面基本上没有提到几个模板算法。但是前面好像提到让读者自己去搜索资料了,所以用更高级模板算法可能也不算犯规。
相关解决方案