访问UBLAS稀疏向量中非零元素的索引

Accessing the indices of non-zero elements in a UBLAS sparse vector

本文关键字:元素 索引 UBLAS 向量 访问      更新时间:2023-10-16

我怎么能知道第一个非零元素在sparse_vector在ublas和每个后续的非零元素的索引?begin()函数给了我一个迭代器,可以用来知道存储的第一个非零值,而不是它在vector中的索引。

下面是Oswin Krause的答案,来自ublas mainling列表:

迭代器提供了一个方法index()来返回期望的结果。但记住,只有const_iterator才是真正稀疏的!

for(SparseVector::const_iterator pos = sparseVec.begin();pos ! =sparsesec .end();++pos){std::cout <<pos.index () & lt; & lt;"& lt; & lt;* pos;}

如果不对矢量进行线性扫描,这似乎是不可能实现的。API只是不公开非零索引。(如果我是你,我会写信给作者,因为他们隐瞒了在序列化稀疏向量时非常有用的信息。)

我过去在使用UBLAS的稀疏矩阵时遇到过类似的问题,最终迫使我自己动手。