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! */

最新文章

  1. 本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel
  2. 关于HTML5的拖拽
  3. poj 3077Rounders(模拟)
  4. 面向.Net程序员的Sql版本管理
  5. asp.net正则表达式过滤标签和数据提取
  6. 【技术宅3】截取文件和url扩展名的N种方法
  7. PHP类
  8. PHP错误:SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
  9. section标签实现文字滚动
  10. IT程序员的抉择:我要离开帝都了
  11. SpringMVC学习笔记:拦截器和过滤器
  12. STL中的容器介绍
  13. node(3)Buffer缓冲区
  14. 使用 RSA 非对称加密保证数据不被篡改 java 例子代码
  15. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
  16. webpack简单原理及用法
  17. hmm学习笔记(二)
  18. Camera Sensor
  19. cesium.js 设置缩放最大最小限制
  20. hadoop生态搭建(3节点)-14.redis配置

热门文章

  1. js中的变量提升和函数提升
  2. JS中的DOM操作怎样添加、移除、移动、复制、创建和查找节点
  3. js常用特效-幻灯片
  4. 2.WHERE中使用=,&gt;,&gt;=,&lt;,&lt;=,&lt;&gt;,!=比较符号
  5. 同一个TextView设置不同的颜色和大小
  6. 【HDOJ 5407】 CRB and Candies (大犇推导
  7. Windows环境下通过Git来管理自己的Android代码
  8. ios学习--第三方框架-MBProgressHUD以及扩展
  9. BZOJ 3165 李超线段树
  10. CentOS 安装 MySQL8