`
grantren
  • 浏览: 77344 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

boost笔记4(boost::multi_array)

阅读更多

boost::multi_array
一言以概之,boost::multi_array就是N维数组。boost::multi_array可以看作STL容器类的扩展,可以和STL相关算法一起工作。
在STL中,N维数组可以通过std::vector<std::vector<...> >类似的方法来模拟,相比而言,boost::multi_array更高效,更直观。

例程1:

#include <cassert>
#include "boost/multi_array.hpp"
#include "boost/cstdlib.hpp"

int main () {
  // Create a 3D array that is 3 x 4 x 2
  typedef boost::multi_array<double, 3> array;
  array A(boost::extents[3][4][2]);
  // Assign a value to an element in the array
  A[0][0][0] = 3.14;
  assert(A[0][0][0] == 3.14);
  return boost::exit_success;
}

 

例程2:

 

 

#include <cassert>
#include "boost/multi_array.hpp"
#include "boost/array.hpp"
#include "boost/cstdlib.hpp"

int main () {
  // Create a 3D array that is 3 x 4 x 2
  boost::array<int, 3> shape = {{ 3, 4, 2 }};
  boost::multi_array<double, 3> A(shape);
  // Assign a value to an element in the array
  A[0][0][0] = 3.14;
  assert(A[0][0][0] == 3.14);
  return boost::exit_success;
}

 

 

例程3:

 

#include <iostream>
#include "boost/multi_array.hpp"
#include "boost/array.hpp"
#include "boost/cstdlib.hpp"

template <typename Array>
void print(std::ostream& os, const Array& A) {
  typename Array::const_iterator i;
  os << "[";
  for (i = A.begin(); i != A.end(); ++i) {
    print(os, *i);
    if (boost::next(i) != A.end())
      os << ',';
  }
  os << "]";
}

void print(std::ostream& os, const double& x) {
  os << x;
}

int main() {
  typedef boost::multi_array<double, 2> array;
  double values[] = {
    0, 1, 2,
    3, 4, 5 
  };
  const int values_size = 6;
  array A(boost::extents[2][3]);
  A.assign(values,values + values_size);
  print(std::cout, A);
  return boost::exit_success;
}

 

2
0
分享到:
评论

相关推荐

    boost::asio::serialport实现串口通信

    4. **异步操作**: 异步操作允许程序在等待数据时继续执行其他任务。以下是一个简单的异步读取示例: ```cpp void handle_read(const boost::system::error_code& error, size_t bytes_transferred) { if (!...

    numpy-boost:允许在 C++ 中作为 boost 访问 Numpy 数组的包装器

    任何写入boost::multi_array接口的 C++ 算法都可以轻松地重新编译以使用 Numpy 数组。 已知缺点: 由于 boost::multi_array 的设计,数组的数据类型和维数在编译时是固定的(尽管这在实践中通常不是一个重要的限制...

    boost库1.68版本windows下编译的dll和lib库

    4. **编译和构建**:执行编译命令,如`b2 --build-type=complete --with-thread --architecture=x86 --address-model=64 stage`,这将编译所有Boost库,并启用多线程支持,针对x86_64架构。 5. **生成库文件**:...

    boost_pi_control_loop_design.rar_boost mathcad_boost pi_boost闭环

    在电力电子领域,Boost转换器是一种常见的DC-DC升压变换器,用于将较低的直流电压提升至较高的直流电压。本资料"boost_pi_control_loop_design.rar"聚焦于Boost电路的PI(比例积分)控制器设计,旨在实现稳定的闭环...

    PV_array_MPPT_Boost_5320W_420V.zip_PV array BOOST_mppt boost_pv光

    标题中的“PV_array_MPPT_Boost_5320W_420V”暗示了这是一个关于光伏阵列最大功率点跟踪(MPPT)升压转换器的模型,设计功率为5320瓦,工作电压为420伏。在光伏系统中,MPPT是一种关键技术,用于从太阳能电池板获取...

    boost graph library

    根据提供的文件信息,我们可以深入探讨Boost Graph Library (BGL)的相关知识点。这是一份详尽的用户指南和参考手册,由Jeremy G. Siek、Lie-Quan Lee和Andrew Lumsdaine共同编著,旨在为程序员提供一个全面了解BGL的...

    boost_1_59_0.tar.gz

    4. **日期时间库(Boost.DateTime)**:支持日期、时间和持续时间的处理,包括国际化和本地化功能。 5. **文件系统库(Boost.Filesystem)**:简化了与文件和目录的操作,如读写、创建、删除等。 6. **序列化库(Boost....

    boost-asio-cpp-network-programming.zip_BOOST教程_Boost_boost asio

    **Boost.Asio库详解** Boost.Asio是Boost库的一部分,专为C++设计,用于处理I/O操作,如网络通信。这个库提供了低级和高级的接口,使得开发者能够高效地编写并发网络应用程序。Boost.Asio的核心在于其异步模型,它...

    C++11 下使用 Boost.Serialization 库实现智能指针的序列化

    Boost.Serialization库是C++社区广泛使用的序列化工具,它提供了丰富的功能来处理各种类型的对象,包括智能指针。在C++11及更高版本中,智能指针(如`std::unique_ptr`,`std::shared_ptr`和`std::scoped_ptr`)被...

    Boost程序库完全开发指南:深入C++_准_标准库 第3版 中文.part2

    Boost程序库完全开发指南:深入C++_准_标准库 第3版 中文.part2

    boost_1_78_0编译及使用

    Boost库是C++编程语言中的一个开源库,它提供了大量的工具和库,旨在提升C++的效率、灵活性和可移植性。Boost库包含了各种不同领域的功能,如算法、并发、容器、日期时间处理、数学计算、文件系统操作、正则表达式、...

    boost_1_33_1.rar_ boost_1_33_1.zip_Boost_Boost_1_33_1.zip_boost_

    4. **算法和数据结构**:Boost包含了一系列高效的算法和数据结构,如`algorithm`库提供了各种通用算法,`Bimap`提供了双向映射,`Graph`库则支持图的处理。 5. **序列化**:Boost.Serialization库允许对象的状态被...

    Boost程序库完全开发指南:深入C++“准”标准库+

    Boost程序库完全开发指南:深入C++“准”标准库+Boost程序库完全开发指南:深入C++“准”标准库+Boost程序库完全开发指南:深入C++“准”标准库+Boost程序库完全开发指南:深入C++“准”标准库+Boost程序库完全开发...

    boost::asio::serial下6个工程演示多种串口读取写入方式方法

    boost::asio::serial下6个工程演示多种串口读取写入方式方法,包含simple,with_timeout,async,callback,qt_integration,stream 等多个工程演示多种方式读取,写入串口,char,string ,buffer[]等多种数据格式。

    C++之boost::array的用法

    本文实例讲述了C++之boost::array的用法,分享给大家供大家参考。具体如下: 代码如下:#include   #include   #include &lt;boost&gt;  #include   using namespace std;  int main()  {   boost::array&lt;int&gt; ...

    boost 基于SSL的通信 CLIENT

    在IT行业中,Boost库是一个非常重要的C++工具集,它为C++标准库提供了许多扩展功能,涵盖了诸如并发、文件系统、智能指针、正则表达式等多个领域。而SSL(Secure Sockets Layer)和其后续版本TLS(Transport Layer ...

    Boost_ClosedLoop_boost控制_boost闭环_boost闭环_Boost_boost双闭环.zip

    在这个特定的压缩包文件中,“Boost_ClosedLoop_boost控制_boost闭环_boost闭环_Boost_boost双闭环.zip”包含了与Boost闭环控制相关的源码,这可能是一个用于模拟、设计或分析Boost电源转换器的双闭环控制系统。...

    boost_1_59_0.tar

    boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_...

Global site tag (gtag.js) - Google Analytics