优秀的程序猿不仅要有深厚理论基础,更要有缜密的思维, 一个简单的函数, 有非常多人都写不好,为什么,

不是做不到,不是想不到,  往往是因为懒而不愿意深入思考.  有句话叫, 天下大事, 必做于细.

int Spline::findTimeInterval(Number time, int startIndex)

{
         int length = this->_times.size();
         if (time < this->_times[0] || time > this->_times[length - 1])
         {
              throw  DeveloperError("time is out of range.");
         }

if (startIndex < 0 || startIndex > length-1)
         {
             throw DeveloperError("length is out of range.");
         }

// Take advantage of temporal coherence by checking current, next and previous intervals
          // for containment of time.
          if (time >= this->_times[startIndex])
          {
              if (startIndex + 1 < length && time < this->_times[startIndex + 1])
              {
                  return startIndex;
              }
              else if (startIndex + 2 < length && time < this->_times[startIndex + 2])
              {
                  return startIndex + 1;
              }
          }
          else if (startIndex - 1 >= 0 && time >= this->_times[startIndex - 1])
          {
              return startIndex - 1;
          }

// The above failed so do a linear search. For the use cases so far, the
          // length of the list is less than 10. In the future, if there is a bottle neck,
          // it might be here.

int i;
          if (time > this->_times[startIndex])
          {
              for (i = startIndex; i < length - 1; ++i) {
                  if (time >= this->_times[i] && time < this->_times[i + 1]) {
                      break;
                  }
              }
          } else {
              for (i = startIndex - 1; i >= 0; --i) {
                  if (time >= this->_times[i] && time < this->_times[i + 1]) {
                      break;
                  }
              }
          }

if (i == length - 1) {
              i = length - 2;
          }

return i;
    }

看看样条插值区间查找函数写的多细腻相关推荐

  1. 如何将zipoutputstream返回_excel:vlookup如何区间查找?如何使用通配符?如何多条件查找?...

    今天来分享下vlookup函数的几种特殊用法,一共三种,如何使用通配符,如果多条件查找,如何模糊查找. 1.区间查找 区间查找 函数解读:=VLOOKUP(F2,B2:C5,2,TRUE) 第一个参数 ...

  2. 2.区间成员函数优先于与之对应的单元素成员函数

    案例1:v1.v2两个vector, 将v2后半部分内容赋给v1 区间成员函数版本: std::vector<int> v1; ... std::vector<int> v2; ...

  3. ad09只在一定范围内查找相似对象_重磅!Excel更新了超级查找函数XLOOKUP,可以对VLOOKUP说拜拜了...

    VLOOKUP这个数据查找函数真的是职场必学函数!!! 绝对的,不会VLOOKUP的人会被加班摧残的! 但是面对一些稍复杂的情况 ,VLOOKUP匹配起来却显得比较困难,原因是多数情况需要构造数据 , ...

  4. 命题作文:Dimension Tree区间查找与IP数据包分类

    这个题目有点大,而且我要严格控制字数,不能像< 命题作文:在一棵IPv4地址树中彻底理解IP路由表的各种查找过程>那样扯得那么开了.事实上,这篇作文是上一篇作文中关于区间查找小节的扩展. ...

  5. STL区间成员函数及区间算法总结

    STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...

  6. python字符串find函数-python字符串查找函数的用法详解

    python字符串查找函数的使用 打开Python开发工具IDLE,新建"findstr.py'文件,并写代码如下: s ='/ab/bx,.s' print (s.find('/x')) ...

  7. vector 查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍

    VLOOKUP函数即使很强大,但是也有局限性,有些查找无法实现.今天,跟大家分享一个万能查找函数:LOOKUP. VLOOKUP函数可以实现的查找LOOKUP也可以,VLOOKUP函数不能实现的查找L ...

  8. excel教程自学网_Excel自学教程:万能查找函数Lookup的神应用和技巧

    提起查找函数,大家第一时间想到的肯定是Vlookup,其实大多数人不知道,Lookup才是查找函数之王,它几乎能高效地实现Vlookup函数的所有功能,部分功能是Vlookup函数无法比拟的. 一.语 ...

  9. vlookup(精确查找、区间查找、反向查找、多条件查找)

    一.基本语法 VLOOKUP(查找的值,查找范围,返回列数,查找方式) 查找的值 内容需完全一样: 查找范围 待查找的必须是数据范围的第一列(比如,要查找货品的数量,我们查的是货品,那么货品必须是查找 ...

最新文章

  1. (001) RN开发之Mac搭建开发环境
  2. dos通过for命令截取字符串
  3. 三维重建-opencv实现sfm
  4. 学一下Unix/C啊
  5. mybatis 打印SQL语句
  6. 学python可以从事什么工作-学Python可以找什么工作或者做什么兼职?
  7. java 编写 servlet 程序_Java技术分享:如何编写servlet程序
  8. keyup常用事件_KeyUp 事件
  9. 一分钟了解阿里云产品:专有网络VPC五大热点技术问题分析
  10. ps 学习总结-卸载不了
  11. Python-标准库(常用模块)
  12. 搬运: CVonline: 图像数据库(一) (更新于20190821)
  13. 英飞凌XC2000系列CAN BootLoader(CAN_BSL)的实现
  14. 华为拍摄月亮专利公布: 多次曝光获取月亮清晰轮廓
  15. 完全卸载3dmax(以及桌子全家产品)
  16. 【转】如何成为一名黑客--Eric Steven Raymond
  17. Android WebView 踩坑日记,字体怎么突然变小了???
  18. How add nic driver to initrd
  19. Android GMS认证项总结
  20. pat甲级考试报名费_每日一感——记第一次PAT甲级考试之感想

热门文章

  1. mahout in Action2.2-给用户推荐图书(2)-分析对用户推荐书目的结果
  2. ubuntu设置自启动服务程序
  3. 回到顶部最简单的JQuery实现代码
  4. 中关村-DIY操作系统之不分区安装Ubuntu系统
  5. iphone 如何实现全屏截图
  6. Delphi中的时间操作技术(1)
  7. linux中多线程解析
  8. 如何统计网站用户的停留时间?
  9. Tensorflow学习教程------tensorboard网络运行和可视化
  10. Cesium原理篇:6 Render模块(6: Instance实例化)