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


C++ intarray::shrink方法代码示例

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


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

示例1: toVarpower

void toVarpower(const_schur_partition a, intarray &result)
{
  int len = a[0];
  int *result_vp = result.alloc(2*len);
  int *orig_result_vp = result_vp;
  result_vp++;

  if (len > 1)
    {
      int v = a[1];
      int e = 1;

      for (int i=2; i<len; i++)
        {
          if (v == a[i])
            e++;
          else
            {
              *result_vp++ = v;
              *result_vp++ = e;
              v = a[i];
              e = 1;
            }
        }
      *result_vp++ = v;
      *result_vp++ = e;
    }

  int newlen = static_cast<int>(result_vp - orig_result_vp);
  *orig_result_vp = newlen;
  result.shrink(newlen);
}
开发者ID:pzinn,项目名称:M2,代码行数:32,代码来源:schur2.cpp

示例2: mult

void varpower::mult(const int *a, const int *b, intarray &result)
{
  int len = *a + *b; // potential length
  int *result_vp = result.alloc(len);
  int *orig_result_vp = result_vp;
  result_vp++;

  index_varpower i = a;
  index_varpower j = b;

  // merge the two varpowers to staticVP
  int va = (i.valid() ? i.var() : -1);
  int vb = (j.valid() ? j.var() : -1);
  for (;;)
    {
      if (va > vb)
        {
          *result_vp++ = va;
          *result_vp++ = i.exponent();
          ++i;
          va = (i.valid() ? i.var() : -1);
        }
      else if (vb > va)
        {
          *result_vp++ = vb;
          *result_vp++ = j.exponent();
          ++j;
          vb = (j.valid() ? j.var() : -1);
        }
      else
        {
          if (va == -1) break;
          int x = i.exponent();
          int y = j.exponent();
          int z = x+y;
          if ((x < 0) == (y < 0) && (x < 0) != (z < 0))
            {
              ERROR("monomial overflow");
            }
          else
            {
              if (z != 0)
                {
                  *result_vp++ = va;
                  *result_vp++ = z;
                }
            }
          ++i; ++j;
          va = (i.valid() ? i.var() : -1);
          vb = (j.valid() ? j.var() : -1);
        }
    }
  int newlen = static_cast<int>(result_vp - orig_result_vp);
  *orig_result_vp = newlen;
  result.shrink(newlen);
}
开发者ID:AlessandroOneto,项目名称:M2,代码行数:56,代码来源:varpower.cpp


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