当前位置: 首页>>代码示例>>C++>>正文


C++ ranges::erase方法代码示例

本文整理汇总了C++中ranges::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ ranges::erase方法的具体用法?C++ ranges::erase怎么用?C++ ranges::erase使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ranges的用法示例。


在下文中一共展示了ranges::erase方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: nextrange

//intersect(currentHint,possibleRanges[j])
//modifies rangelist
range nextrange(ranges &rangelist, range &myrange)
{
   if(rangelist.empty())
   {
      range retRange = myrange;
      myrange.start = myrange.end+1;
      return retRange;
   }
   else
   {
      if(myrange.start > rangelist[0].end)
      {
         //rangelist[0] is the next range for sure.
         range retRange = rangelist[0];
         rangelist.erase(rangelist.begin());
         return retRange;
      }
      else if(myrange.start == rangelist[0].end)
      {
         if(rangelist[0].start == rangelist[0].end )
         {
            rangelist[0].score++;
            range retRange = rangelist[0];
            rangelist.erase(rangelist.begin());
            myrange.start++;
            return retRange;
         }
         else
         {
            range retRange = rangelist[0];
            retRange.end--;
            rangelist[0].start = rangelist[0].end;
            rangelist[0].score++;
            myrange.start++;
            return retRange;
         }
            
      }
      else if(myrange.start >rangelist[0].start)
      {
         //we have an intersection here. rangelist[0] <=> myrange.start-1
         //update rangelist first element accordingly
         range retRange = range(rangelist[0].start,myrange.start-1,rangelist[0].score);
         rangelist[0].start = myrange.start;
         return retRange;
      }
      else if(myrange.start == rangelist[0].start)
      {
         if(myrange.end < rangelist[0].end)
         {
            // myrange.start to myrange.end is the next range.
            // We add 1 to score of rangelist[0] score
            range retRange = range(myrange.start,myrange.end,rangelist[0].score+1);
            rangelist[0].start = myrange.end+1;
            myrange.start = myrange.end+1;
            return retRange;
         }
         else
         {
            //takes care of myrange.end = rl[0].end also
            // rangelist[0] with inc score is the nextrange. Remove it from the list.
            // update myrange accordingly
            range retRange = range(rangelist[0].start,rangelist[0].end,rangelist[0].score+1);
            myrange.start = rangelist[0].end+1;
            rangelist.erase(rangelist.begin());
            return retRange;
         }
      }
      else 
      {
         //myrange.start < rangelist[0].start
         
          int end = MIN(myrange.end,rangelist[0].start-1);
          range retRange = range(myrange.start,end,1);
          myrange.start = end+1;
          return retRange;
      }
   }
}
开发者ID:woodstok,项目名称:tc,代码行数:81,代码来源:doors.c


注:本文中的ranges::erase方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。