迭代运算
C++ 序列的迭代方法和运算符用于遍历或返回对象序列元素的数量。
以下是可用的方法:
next 或 ++
bool next(T& val) 或 ++()
提取下一个序列值(如果在序列中遇到 null
,则可能返回 &McoSql::Null
值)。
reset
void reset()
将迭代器的位置重置到序列中的第一个元素;此迭代器必须是“根”迭代器,即它不依赖于其他序列,例如搜索结果或序列字段迭代。
count
uint8 count() const
返回对象的具象化序列中的元素数量。
示例
以下是一个示例代码片段,展示了不同类型的序列迭代,请注意 next()
函数和 ++
运算符的使用:
{
mco_trans_h trans;
mco_date day;
mco_cursor_t quote_cursor;
Quote quote;
MCO_RET rc;
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &trans);
if ( MCO_S_OK == rc )
{
/* 遍历所有报价对象 */
Quote::by_sym::cursor(trans, "e_cursor);
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_iterator();
Sequence<float> high_iterator = quote.high_iterator();
Sequence< Char<15> > day_str_iterator = quote.day_str_iterator();
/* 迭代序列字段 */
while (day_iterator.next(day))
{
Char<MAX_SYMBOL_LEN> symbol = quote.symbol;
Char<15> day_str = ++day_str_iterator;
printf("%s[%u(%s)]: %f\n", (char*)symbol, day, (char*)day_str, ++high_iterator);
}
}
mco_trans_commit(trans);
}
}