【问题标题】:How to get a C++ vector out of const float*如何从 const float* 中获取 C++ 向量
【发布时间】:2017-12-22 03:06:31
【问题描述】:

我正在使用一个库,它有一个返回 const float * 的函数。

我怎样才能从中得到一个法线向量,以找出大小和其他信息?

我试过做*array,但这不起作用。

可以这样做吗?

【问题讨论】:

  • 问作者。
  • 我不相信当它衰减为指针时你可以恢复大小。一些库会提供一个end 检查函数,这样你就可以遍历东西——我们需要更多关于函数原型的信息来回答。询问库实现者可能会更快

标签: c++ arrays pointers vector constants


【解决方案1】:

const float * 是一个指针。假设它指向任何东西,则指针指向float 对象。 float 对象可能是也可能不是数组的元素。返回指针的函数的文档可能包含有关指针的信息。

如何从 const float* 中获取数组/向量

这在很大程度上取决于“获取数组/向量”是什么意思。如果指针确实指向数组的元素,那么从某种角度来说,你可以通过调用返回指针的函数来“获取数组”(或者更确切地说,是指向数组的指针)。

如果通过“获取数组/向量”,您的意思是获取对数组对象的引用,并且指针指向该数组的第一个元素,那么这对于数组当然是可能的,通过将指针转换为数组的类型。要知道数组的类型,您需要在编译时知道数组的大小。

获取对向量的引用不可能使用指向向量元素的指针。

要了解尺寸和其他信息?

你不能只用一个指针找出数组的大小——至少除非你知道数组的内容有什么特别之处。

通常,如果 API 返回指向数组的指针,它还会提供一个函数来获取指向数组末尾的指针(过去最后一个元素)。如果你有开始和结束指针,你可以计算出它们之间有多少元素。

另一种方法是让 API 指定一个特定值来表示数组的结尾(终点)。这对于数字数组来说不是很典型,因为通常需要所有可表示的值并且不能为终止符保留。这是一种非常典型的表示字符串的方法,其中空终止字符'\0' 表示字符串的结尾。有时也会使用以nullptr 结尾的指针数组。

第三种方法是以某种方式提供大小。它可以是常量并在文档中描述,也可以由宏定义。可能有一个函数会返回它,或者它可能是程序员计划带入坟墓的秘密。

库的文档可能会描述所选择的方法。

【讨论】:

    【解决方案2】:

    您找不到指针指向的数组的大小。该函数必须以某种方式返回大小,否则大小是固定的并记录在案。

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 1970-01-01
      • 2023-01-19
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多