Octave -访问octave_value_list中的值
Octave - Accessing Values in octave_value_list
我在使用Octave c++ API时在c++开发环境中工作。
我想知道如何在调用函数时访问返回的octave_value_list中的单个值。
例如,当我调用时钟函数时,我返回了一个octave_value_list,其中显示以下内容:
2014.0000 8.0000 22.0000 10.0000 1.0000 44.7120
我现在想访问每个单独的值,但不知何故,我只能获得年份。我缺少一些语法,也许有人可以帮助我。
回答你问题的有用文档:
-
octave_value_list
的氧 -
octave_value
的氧
您提到的值是octave_value_list
中的多个octave_value
s,还是octave_value_list
中的单个octave_value
中的值数组?
注意,单个octave_value
不一定是标量值。它可以是一个n维数组,包含多个元素。它可以是结构体、结构体数组或单元格数组。基本上它可以是任何一个八度变量。例如,调用:
foo ([1 2 3], "string", {678, "other string"}, struct ("over", 9000))
将创建一个包含4个octave_value
的octave_value_list
和:
foo ([1 2 3])
仍然会创建一个octave_value_list
,但是只有一个octave_value
。
你需要做的第一件事是弄清楚你实际上拥有什么。你可以使用octave_value_list.length()
来获得一个想法,你可以通过简单地用圆括号()
索引它们来获得单个octave_value
。
for (int i =0; i < list.length (); i++)
do_stuff_with (list(i));
一旦你得到一个octave_value
,你可以尝试转换成许多东西。
std::string s = val.string_value ();
bool b = val.bool_value ();
boolMatrix bm = val.bool_matrix_value ();
Cell c = val.cell_value ();
NDarray nd = val.array_value ();
int i = val.int_value ();
Array<double> ad = val.vector_value ();
虽然您可以使用octave_value
的is_x()
方法之一,但建议在转换后检查error_state
的值,以检查是否有任何错误。这将提供一个更自然的Octave体验,并将处理不同类型之间的转换,你期望在Octave为你。
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- C++中带有List类的迭代器Segfault
- 使用"std::unordereded_map"映射到"std::list"对象
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- GCC对可能有效的代码抛出init list生存期警告
- 使用std::list创建循环链表
- 重载Singly Linked List中的赋值运算符
- 为什么static_assert错误:即使我传递常量"expression must have a constant value"?
- '[](std::list& list)<int>{return std::move(list)}(list)' 是否保证将 'list' 留空?
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 为什么我会" void value not ignored as it ought to be"?
- "std::list::splice(std::const_iterator pos, std::list&& other)"是否保证将"其他"留空?
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 方法错误"not all control paths return a value"和方法不返回值
- 在递归函数中创建 std::list of value 而不是 std::list of 指针
- <Value> 使用指向值的原始指针从 std::list 中删除?