尝试 Set & Get 元素
本页将介绍如何向指定 Vector 对象实例进行元素的 Set & Get 操作
前提条件
首先,我们需要创建一个 Vector 对象实例,然后 push 一个元素,以便进行元素的 set & get 操作。
尝试 Set 元素
已知元素索引号位于 push_element_index
变量,现在我们尝试设置(重写)该元素的值:
现在,我们已经调用 vector_helper_set_element
函数设置元素 push_element_index
的值为变量 element_value
的值。
函数 vector_helper_set_element
的返回值类型为 bool
,若设置指定元素的值失败,则返回 false
,反之返回 true
。通常情况下,建议您检查该函数的返回值。
尝试 Get 元素
我们刚才已经设置元素 push_element_index
的值为变量 element_value
的值,现在我们尝试获取该值:
现在我们已经通过调用 vector_helper_get_element
函数获取元素 push_element_index
的值并存入 get_element_value
变量。
函数 vector_helper_get_element
的返回值类型为 bool,若获取指定元素的值成功返回 true
,反之返回 false
。通常情况下,建议您检查该函数的返回值。而不是忽略返回值直接使用 get_element_value
变量。
尝试 Unsafe Get 元素
为了降低对元素读取性能的影响,Vector Helper 内置了一个 Unsafe 函数 vector_helper_get_element_value
。该函数在调用时仅简单的对调用参数进行检查并返回指定元素位于 Vector 对象实例中的 void*
内存指针。
除非必要,否则您不应该使用 vector_helper_get_element_value 函数。因为这是一个 Unsafe 函数,使用此函数时无法确保元素和缓冲区的完整性。您应该使用 vector_helper_get_element 函数来获取指定元素的值。
现在我们已经通过调用 vector_helper_get_element_value
函数获取元素 push_element_index
的值并赋值给 get_element_value
变量。
根据上述代码逻辑,我们尝试对函数 vector_helper_get_element_value
所返回的 void*
指针进行强制类型转换为 int*
并对 int*
进行内存读取,从而赋值给变量 get_element_value
。而在这些过程中,无法确保该函数会返回无效指针,进而导致承载当前模块的进程实例崩溃。当然,您可以尝试对该函数返回的指针进行有效性检查,但也会因此影响性能。
若您坚持使用此函数,建议您遍历或仅读取元素的值时,将指针变量使用 const
关键字限定。
该函数使用预处理器条件编译选项 VECTOR_ALLOW_UNSAFE_FUNCTION,该条件编译选项是默认启用的。当该选项为启用状态时,函数 vector_helper_get_element_value 以及其他 Unsafe 函数、数据类型、宏才会被编译。
相关 Vector Helper API 的详细介绍
Last updated