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