c++ - 如何将箭头::数组转换为标准:: vector ?

标签 c++ arrays vector apache-arrow

我有一个通过读取文件创建的 Apache 箭头数组。

std::shared_ptr<arrow::Array> array;
PARQUET_THROW_NOT_OK(reader->ReadColumn(0, &array));

有没有办法将其转换为 std::vector 或 C++ 中的任何其他 native 数组类型?

最佳答案

您可以使用 std::static_pointer_castarrow::Array例如,一个 arrow::DoubleArray如果数组包含 double 数,则使用 Value函数来获取特定索引处的值。例如:

auto arrow_double_array = std::static_pointer_cast<arrow::DoubleArray>(array);
std::vector<double> double_vector;
for (int64_t i = 0; i < array->length(); ++i) 
{
    double_vector.push_back(arrow_double_array->Value(i));
}

ColumnarTableToVector的后半部分本例中的函数:
https://arrow.apache.org/docs/cpp/examples/row_columnar_conversion.html .在该示例中,table->column(0)->chunk(0)std::shared_ptr<arrow::Array> .

要了解更多信息,我发现在此处单击继承图树的各个部分很有用:https://arrow.apache.org/docs/cpp/classarrow_1_1_flat_array.html .例如,arrow::StringArray 中的字符串使用 GetString 访问函数而不是 Value功能。

这只是我从这些链接、johnathan 上面的评论以及我自己玩的一个小例子中拼凑出来的,所以我不确定这是否是最好的方法,因为我对此很陌生。

关于c++ - 如何将箭头::数组转换为标准:: vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347028/

相关文章:

javascript - 带有索引,键和值的 map 上的每个jquery

c++ - 我怎么知道我的迭代器是否递减超过了我的 vector 的开头?

r - 当 R 中另一个向量为 TRUE 时,保留向量中的值

c++ - 使用指向文件的指针从 vector 中保存对象

c++ - 尝试从文件中读取对象并正确获取一些记录后,我的程序检测到eof,剩下许多记录

c++ - 如果没有输入 getline 定界符,推荐一种抛出异常的方法?

c++ - 独立于共享库的 linux 二进制文件

javascript - For 循环生成 URL 不起作用

c++ - 为什么要使用无限循环?

php - PHP 中内爆函数的可能限制