本文整理汇总了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);
}
示例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);
}