- 论坛徽章:
- 0
|
当选用逆向迭代器搜索时,目标range用rbegin和rend,而search set是用begin和end。我觉得search set也该是rbegin和rend,当我试着用rbegin和rend时,也通过了,和begin end一样的结果,哪位大虾解释解释
- //findof1.cpp
- #include "algostuff.hpp"
- using namespace std;
- int main()
- {
- vector<int>; coll;
- list<int>; searchcoll;
- insert_elements(coll,1,11);
- insert_elements(searchcoll,3,5);
- print_elements(coll, "coll: " );
- print_elements(searchcoll,"searchcoll : ");
- vector<int>;::iterator pos;
- pos=find_first_of ( coll.begin(),coll.end(),
- searchcoll.begin(),
- searchcoll.end() );
- cout << " first element of searchcoll in coll is element " << distance(coll.begin(),pos ) +1 <<endl;
- vector<int>;::reverse_iterator rpos;
- rpos= find_first_of ( coll.rbegin(),coll.rend(),
- searchcoll.begin(),
- searchcoll.end() );
- cout << "last element of searchcoll in coll is element "
- << distance(coll.begin(),rpos.base() ) << endl;
- }
复制代码
结果
- [gag@genomic-server cpp]$ ./a.out
- coll: 1 2 3 4 5 6 7 8 9 10 11
- searchcoll : 3 4 5
- first element of searchcoll in coll is element 3
- last element of searchcoll in coll is element 5
复制代码
下面是algostuff.hpp
- #ifndef ALGOSTUFF_HPP
- #define ALGOSTUFF_HPP
- #include <iostream>;
- #include <vector>;
- #include <deque>;
- #include <list>;
- #include <set>;
- #include <map>;
- #include <string>;
- #include <algorithm>;
- #include <functional>;
- #include <numeric>;
- template <class T >;
- inline void print_elements ( const T& coll, const char* optcstr=" " )
- {
- typename T::const_iterator pos;
- std::cout << optcstr;
- for ( pos=coll.begin(); pos !=coll.end(); ++pos ) {
- std::cout << *pos << " " ;
- }
- std::cout << std::endl;
- }
- template < class T >;
- inline void insert_elements ( T& coll, int first, int last )
- {
- for ( int i =first; i<=last; ++i ) {
- coll.insert(coll.end(),i);
- }
- }
- #endif /*ALGOSTUFF_HPP*/
复制代码 |
|