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

发布于 2024-12-05 21:37:22 字数 97 浏览 1 评论 0原文

我如何知道 ublas 中的稀疏向量中的第一个非零元素以及每个后续非零元素的索引?函数 begin() 为我提供了一个迭代器,可用于了解存储的第一个非零值,而不是其在向量中的索引。

How can I know the index of the first non-zero element in a sparse_vector in ublas and each subsequent nonzero element as well? The function begin() gives me an iterator that can be used to know the first non-zero value stored, not its index in the vector.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南薇 2024-12-12 21:37:22

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

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

for(SparseVector::const_iterator pos =稀疏Vec.begin(); pos !=
稀疏Vec.end();++pos){ std::cout << pos.index()<< ” “<< *位置; }

Here is the answer, after Oswin Krause, from the ublas mainling list:

Iterators offer a method index() which returns the desired result. But
remember that only the const_iterator is really sparse!

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

柠檬心 2024-12-12 21:37:22

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

过去我在 UBLAS 的稀疏矩阵方面也遇到过类似的问题,最终迫使我自己推出自己的矩阵。

This seems impossible to achieve without a linear scan over the vector. The API simply doesn't expose the non-zero indices. (I'd write to the authors if I were you, since they are withholding information that can be very useful when serializing sparse vectors.)

I've had similar problems with UBLAS's sparse matrices in the past, eventually forcing me to roll my own.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文