尝试 Quick Enum 元素

本页将介绍如何对指定 Vector 对象实例进行元素的 Quick Enum 操作。

什么是 Quick Enum?

Quick Enum 是 Vector Helper 中为快速枚举并比较指定 Vector 对象实例中从指定元素索引号开始向后所有元素而设计的快速枚举器(特性)。

为什么存在 Quick Enum?

您应该了解,Vector Helper 侧重于运行时安全,因此您通常会在 for 或 while 循环中调用 vector_helper_get_element 函数来逐一获取每个元素值的副本并进行比较。这样做的确可以实现枚举并比较每个元素,但无疑带来了内存拷贝与函数调用的性能开销,从而影响应用程序执行性能。

相反,若使用 Quick Enum 特性上述问题就会迎刃而解。您仅需要指定起始枚举的元素索引号和需要比较的元素值副本,将枚举与比较工作交由快速枚举器并处理比较成功的元素即可。

如何使用 Quick Enum?

首先向 Vector 对象实例 vector_object 添加 10 个 int 元素:

C
int element_values[10] = {1, 2, 3, 4, 5, 1, 2, 3, 4, 1};
vector_helper_push_multiple_element(vector_object, element_values, 
    sizeof(element_values[0]), sizeof(element_values) / sizeof(element_values[0]), 
    &push_element_index);

然后,我们通过调用 vector_helper_enum_element 函数对上面添加的 10 个 int 元素进行 Quick Enum,枚举并筛选出元素值为 1 的元素:

C
int element_value = 1;
for(size_t enum_element_index = 0; vector_helper_enum_element(vector_object, 
    &enum_element_index, &element_value, sizeof(element_value)); enum_element_index++)
{
    printf("enum element index = %d\n", enum_element_index);
}
printf("enum completed!\n");

若 Quick Enum 成功,现在 Shell 上应打印输出:

Shell
enum element index = 0
enum element index = 5
enum element index = 9
enum completed!

当然被比较的元素值副本大小(byte)大于等于 4 byte 且小于等于 16 byte 时,Quick Enum 将使用 Block Comparison 策略优化快速枚举器的性能,但这不是绝对的。

上面的示例代码中调用的 vector_helper_enum_element 函数的详细介绍您可以在 Vector Helper API 分类中的“元素快速枚举器”页面找到:

Last updated