gpt4 book ai didi

c++ - 具有 BOOST/CSTDINT 类型的 BOOST 稀疏 vector 数组;失败,为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:16 25 4
gpt4 key购买 nike

早上好

我正在尝试执行以下操作:

#include <new>
//Boost for sparse and cstdint
#include <boost/numeric/ublas/vector_sparse.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/cstdint.hpp>

int main(){

boost::numeric::ublas::compressed_vector<boost::int_fast8_t> *p = new boost::numeric::ublas::compressed_vector<boost::int_fast8_t>[100];
boost::numeric::ublas::compressed_vector<boost::int_fast8_t> t (12,2);

p[0] = t;

for(boost::int_fast8_t i=0;i<t.size();i++)
{

p[0](i) = i;

}
std::cout << p[0] << std::endl;
}

产生:[12](
而如果我使用标准类型,即 int,它会按预期打印范围。

我做错了什么吗?或者这是不可能的?

我很欣赏 uint8_t 在 32 位机器上实际上并没有那么快,但我需要节省内存。

TIA!

最佳答案

您的 int_fast8_t 实际上等同于 char(有符号或无符号)类型,并在打印时被视为此类。

auto& data = p[0];
std::copy(data.begin(), data.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;

解决了这个问题(通过明确地将值视为整数,而不是字符)。

与数组、稀疏性、stdints 或其他无关。只是 iostreams :)

查看 Live On Coliru

关于c++ - 具有 BOOST/CSTDINT 类型的 BOOST 稀疏 vector 数组;失败,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22563368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com