条件运算
条件 C++ 方法运算将对象的布尔序列应用于输入序列。
以下是可用的方法:
iif
Sequence<R> iif(Sequence<R> const& then, Sequence<R> const& else) const
根据对象的“条件”序列中元素的布尔值,选择“则”序列或“否则”序列中的元素。这三个序列以相同的速度遍历(如果使用“则”序列中的元素,则跳过“否则”序列中的元素,反之亦然)。
cond
Sequence<R> cond(Sequence<R> const& then, Sequence<R> const& otherwise) const
根据对象的“条件”序列中元素的布尔值,选择“然后”序列或“否则”序列中的元素。与 iif() 不同,未使用的序列中的位置不会发生改变。
更多详细信息,请参阅三元运算页面。
filter
Sequence<T> filter(Sequence<mco_seq_bool> const& condition) const
该函数返回与输入序列类型相同的序列,其中仅包含对象条件序列中对应为 true
的元素。
filterPos
Sequence<mco_seq_no_t> filterPos() const
该函数返回一个整数序列,其中包含对象条件序列中为 true
的元素的位置。
示例
以下是演示条件运算的示例代码片段:
{
mco_trans_h trans;
mco_cursor_t quote_cursor;
Quote quote;
mco_date last;
MCO_RET rc;
...
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &trans);
if ( MCO_S_OK == rc )
{
for (rc = mco_cursor_first(trans, "e_cursor);
rc != MCO_S_CURSOR_END;
rc = mco_cursor_next(trans, "e_cursor))
{
quote.from.cursor(trans, "e_cursor);
// 选择区间
Sequence<uint4> day_iterator;
quote.day_last(&last);
quote.day_search(day_iterator, DMY(1, MONTH(last), YEAR(last)),
MCO_SEQ_BOUNDARY_INCLUSIVE, last, MCO_SEQ_BOUNDARY_INCLUSIVE));
// 显示上个月收盘价高于开盘价的日期
print_sequence(quote, day_iterator.filter(quote.close_project(day_iterator) >
quote.open_project(day_iterator)));
}
mco_trans_rollback(trans);
}
}