您的位置:首页
STL_算法_查找算法(binary_search、includes)
2017-06-05 19:54
288 查看
C++ Primer 学习中。。
。
简单记录下我的学习过程 (代码为主)
全部容器适用(O(log(n))) 已序区间查找算法
binary_search //二分查找。返回bool值,
includes //包括查找,返回bool值。
#include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorithm> using namespace std; /***************************************** //全部容器适用(O(log(n))) 已序区间查找算法 binary_search() //二分查找。返回bool值, includes() //包括查找,返回bool值。 *****************************************/ /************************************************************************************* std::binary_search 全部排序容器适用 algorithm -------------------------------------------------------------------------------------- template <class ForwardIterator, class T> bool binary_search ( ForwardIterator first, ForwardIterator last, const T& value ); template <class ForwardIterator, class T, class Compare> bool binary_search ( ForwardIterator first, ForwardIterator last, const T& value, Compare comp ); //eg: template <class ForwardIterator, class T> bool binary_search ( ForwardIterator first, ForwardIterator last, const T& value ) { first = lower_bound(first,last,value); return (first!=last && !(value<*first)); } *************************************************************************************/ /************************************************************************************* std::includes 全部排序容器适用 algorithm -------------------------------------------------------------------------------------- template <class InputIterator1, class InputIterator2> bool includes ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2 ); template <class InputIterator1, class InputIterator2, class Compare> bool includes ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp ); //eg: template <class InputIterator1, class InputIterator2> bool includes ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2 ) { while (first1!=last1) { if (*first2<*first1) break; else if (*first1<*first2) ++first1; else { ++first1; ++first2; } if (first2==last2) return true; } return false; } *************************************************************************************/ bool myfunction (int i,int j) { return (i<j);} int main() { int myints[] = {1,2,3,4,5,4,3,2,1}; vector<int> v(myints,myints+9); // 1 2 3 4 5 4 3 2 1 // using default comparison: sort (v.begin(), v.end()); cout << "looking for a 3... "; if (binary_search (v.begin(), v.end(), 3)) cout << "found!\n"; else cout << "not found.\n"; // using myfunction as comp: sort (v.begin(), v.end(), myfunction); cout << "looking for a 6... "; if (binary_search (v.begin(), v.end(), 6, myfunction)) cout << "found!\n"; else cout << "not found.\n"; cout<<endl; /**----------------------------------------------------------------------------------**/ int container[] = {5,15,10,25,20,35,30,50,45,40}; int continent[] = {40,30,20,10}; sort (container,container+10); sort (continent,continent+4); // using default comparison: if ( includes(container,container+10,continent,continent+4) ) cout << "container includes continent!" << endl; // using myfunction as comp: if ( includes(container,container+10,continent,continent+4, myfunction) ) cout << "container includes continent!" << endl; return 0; } /***** Output looking for a 3... found! looking for a 6... not found. container includes continent! container includes continent! */
相关文章推荐
- c++之STL(13) STL 算法 - 查找算法(6)binary_search(b,e,v) binary_search(b,e,v,p) includes(b,e,sb,se) include
- C++ STL 算法:查找算法(6) binary_search、includes
- STL_算法_查找算法(binary_search、includes)
- C++ STL 算法:查找算法(2) search_n
- C++标准库---已序区间算法之一binary_search()&includes()
- stl中binary_search算法相关学习;
- STL 源代码分析 算法 stl_algo.h -- binary_search
- STL 源码剖析 算法 stl_algo.h -- binary_search
- STL中二分查找相关算法(binary_search, lower_bound, upper_bound, equal_range)
- C++的STL的binary_search()和includes()
- STL中查找方法用法总结-adjacent_find, binary_search, includes, lower_bound, upper_bound, equal_range
- c++之STL(13) STL 算法 - 查找算法(2)search_n() search_n(b, e, c, v) search_n(b, e, c, v, p)
- c++之STL(13) STL 算法 - 查找算法(3)search() find_end()
- STL_算法_查找算法(search、find_end)
- STL中的二分查找算法(binary_search lower_bound upper_bound equal_range)
- STL_算法_查找算法(search_n)
- STL泛型算法--binary_search()
- STL_算法_查找算法(search、find_end)
- STL中提供-二分查找算法(binary_search lower_bound upper_bound equal_range)
- STL 源代码分析 算法 stl_algo.h -- includes