本文整理汇总了C++中ListNode::at方法的典型用法代码示例。如果您正苦于以下问题:C++ ListNode::at方法的具体用法?C++ ListNode::at怎么用?C++ ListNode::at使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ListNode
的用法示例。
在下文中一共展示了ListNode::at方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ListNode
/// APLCatenationFunctionApply
void CatenationFunction::applyOp
(
Expr& target,
APLValue* left,
APLValue* right
)
{
ListNode* lshape = left->shape();
ListNode* rshape = right->shape();
int llen = lshape->length();
int rlen = rshape->length();
if (llen <= 0 || (llen != rlen))
{
target = error("catenation conformability error");
return;
}
// get the size of the last row in each structure
int lrow, rrow;
IntegerExpression* ie = lshape->at(llen - 1)->isInteger();
if (ie)
{
lrow = ie->val();
}
else
{
lrow = 1;
}
ie = rshape->at(rlen - 1)->isInteger();
if (ie)
{
rrow = ie->val();
}
else
{
rrow = 1;
}
// build up the new size
int extent = lrow + rrow;
ListNode* newShape =
new ListNode(new IntegerExpression(extent), emptyList());
llen = llen - 1;
while (--llen >= 0)
{
newShape = new ListNode(lshape->at(llen), newShape);
ie = lshape->at(llen)->isInteger();
if (ie)
{
extent *= ie->val();
}
}
APLValue* newval = new APLValue(newShape, extent);
// now build the new values
int i, index, lindex, rindex;
index = lindex = rindex = 0;
while (index < extent)
{
for (i = 0; i < lrow; i++)
{
newval->atPut(index++, left->at(lindex++));
}
for (i = 0; i < rrow; i++)
{
newval->atPut(index++, right->at(rindex++));
}
}
target = newval;
}