如何知道ublas中的sparse_vector中的第一个非零元素的索引以及每个后续的非零元素?函数begin()给我一个迭代器,可以用来知道存储的第一个非零值,而不是它在向量中的索引。
答案 0 :(得分:1)
在Oswin Krause之后,来自ublas mainling列表的答案如下:
迭代器提供一个返回所需结果的方法index()。但 记住只有const_iterator真的很稀疏!
for(SparseVector :: const_iterator pos = sparseVec.begin(); pos!= sparseVec.end(); ++ pos){std :: cout<< pos.index()<< “”<< * POS机; }
答案 1 :(得分:0)
如果没有对矢量进行线性扫描,这似乎是不可能实现的。 API根本不会暴露非零指数。 (如果我是你,我会写给作者,因为他们隐瞒了在序列化稀疏向量时非常有用的信息。)
我过去曾遇到类似UBLAS稀疏矩阵的问题,最终迫使我自己动手。