gpt4 book ai didi

c++ - 是否有接受预填充和预分配缓冲区的随机访问容器类型?

转载 作者:可可西里 更新时间:2023-11-01 15:55:58 28 4
gpt4 key购买 nike

我正准备自己写点东西,因为我没有找到我要找的东西,但我想我应该在开始之前问问人群。

  • 是否有允许传入预填充缓冲区的 boost 或 STL 随机访问容器类型?

虚构的(?)容器类型会像这样操作:

  const int blobSize = unpackBlobSize( msg );
int * blob = unpackBlobData( msg );

SpecialVector<int> mySpecialIntVector( blob, blobSize );

基本上我正在将一个旧库与 c 风格的原始缓冲区指针连接起来,但我想使用 C++ 风格的容器语义而不需要复制步骤。我希望拥有的是 std::vector 加上预分配和预填充的缓冲区构造函数以及减去调整大小。

Libeigen 的 Eigen::Map 具有此类功能,它允许执行以下操作:

  int array[9];
for(int i = 0; i < 9; ++i)
array[i] = i;
stl::cout << Eigen::Map<Eigen::Matrix3i>(array) << stl::endl;

有人知道涵盖这些约束的 boost 或 STL 模板吗?

最佳答案

根据 Dennis Zickenfoose 的评论,我查阅了 Boost.range 似乎提供了完美的解决方案:

  #include <boost/range.hpp>
#include <boost/foreach.hpp>
#include <iostream>

int main()
{
const int blobSize = 100;
int blob[blobSize];

for( int i = 0; i < blobSize; ++i )
blob[i] = i;

boost::iterator_range<int*> blobPsudoContainer( blob, blob + blobSize );

BOOST_FOREACH( int & i, blobPsudoContainer )
i = i + 1;

std::cout << "Size is:" << blobPsudoContainer.size() << "\n";
std::cout << "value at 0 is:" << blobPsudoContainer[0] << "\n";
return 0;
}

谢谢丹尼斯! :)

关于c++ - 是否有接受预填充和预分配缓冲区的随机访问容器类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853825/

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