其他序列函数
以下函数接受多种输入序列参数,并生成结果序列或标量类型,具体描述见下表:
histogram
mco_seq_histogram_TYPE()
为输入序列构建直方图。应指定输入序列的最小值(含)和最大值(不含),以及区间的数量。
MCO_RET mco_seq_histogram_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h input,
TYPE min_value,
TYPE max_value,
size_t n_intervals
);
sort
mco_seq_sort_TYPE()
对先前使用 mco_seq_get()
提取的序列元素进行排序,并构建一个排列数组,以便能够访问其他序列的元素。
MCO_RET mco_seq_sort_TYPE(
TYPE const* elems,
mco_seq_no_t* permutation,
mco_size_t n_elems
);
order_by
mco_seq_order_by_TYPE()
使用由 mco_seq_sort()
生成的排列对序列元素进行排序。
- 如果数据参数为
NULL
,则此函数会将所有序列元素提取到一个数组中,然后根据给定的排列创建对该数组的迭代器。创建的数组应通过重置方法移除。 - 如果数据参数不为
NULL
,则忽略输入迭代器,并从该数组中获取数据。
MCO_RET mco_seq_order_by_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h input,
mco_seq_no_t* permutation,
mco_size_t n_elems,
TYPE* data
);
相关信息
以下这组 C API 函数通过函数指针 func
对单个输入序列或两个输入序列(左序列和右序列)应用特定操作。
func
mco_seq_func_TYPE()
将由参数 func
指向的函数应用于输入序列,并生成相同类型的输出序列。
MCO_RET mco_seq_func_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h input,
mco_seq_func_TYPE_ptr_t func
);
func2
func2mco_seq_func2_TYPE()
将由参数 func
指向的函数应用于左序列和右序列,并生成相同类型的输出序列。两个输入序列必须是相同的类型。如果两个输入序列的长度不同,则操作仅在较短序列的元素数量上执行。
MCO_RET mco_seq_func2_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h left,
mco_seq_iterator_h right,
mco_seq_func_TYPE_ptr_t func
);
func_ctx
mco_seq_func_ctx_TYPE()
使用由 ctx
指向的上下文,将由 func
指向的函数应用于输入序列,并生成相同类型的输出序列。
MCO_RET mco_seq_func_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h input,
mco_seq_func_TYPE_ptr_t func,
void* ctx
);
func2_ctx
mco_seq_func2_ctx_TYPE()
使用由 ctx 指向的上下文,将由 func 指向的函数应用于输入序列, 并生成相同类型的输出序列。两个输入序列必须是相同的类型。如果两个输入序列的长度不同,则操作仅在较短序列的元素数量上执行。
MCO_RET mco_seq_func2_ctx_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h left,
mco_seq_iterator_h right,
mco_seq_func_TYPE_ptr_t func,
void* ctx
);
cond
mco_seq_cond_TYPE()
对输入序列应用由参数 func
指向的布尔谓词函数,并生成类型为布尔的结果序列。
MCO_RET mco_seq_cond_TYPE(mco_seq_iterator_h result,
mco_seq_iterator_h input,
mco_seq_cond_TYPE_ptr_t func);
cond_ctx
mco_seq_cond_ctx_TYPE()
使用由 ctx
指向的上下文,对输入序列应用由 func
指向的布尔谓词函数,并生成类型为布尔的结果序列。
MCO_RET mco_seq_cond_ctx_TYPE(
mco_seq_iterator_h result,
mco_seq_iterator_h input,
mco_seq_func_TYPE_ptr_t func,
void* ctx
);
hash
mco_seq_hash()
计算输入序列中每个值的 32 位哈希码,并生成一个类型为 uint4
的结果序列。此函数可以将哈希码与先前计算的另一个序列的哈希码相结合(如果哈希参数不为空)。
MCO_RET mco_seq_hash(
mco_seq_iterator_h result,
mco_seq_iterator_h input,
mco_seq_iterator_h hash
);
示例
以下是一个示例代码片段,展示了这些函数中的一个:
{
mco_trans_h trans;
mco_cursor_t quote_cursor;
Quote quote;
mco_seq_iterator_t high_iterator, result_iterator;
MCO_RET rc;
float max = 142.54;
float min = 24.13;
int n_intervals = 20;
...
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, "e);
Quote_high_iterator("e, &high_iterator);
...
rc = mco_seq_histogram_float(&result_iterator, &high_iterator, max, min, n_intervals);
...
}
...
}