c++ - 从 A* 存储路径,使用 operator::new 和 boost::multi_array

标签 c++

我第一次尝试使用动态内存分配。我想为 2 dim 动态数组分配内存,以存储来自 A* 函数的路径。我认为这项工作的数组是 boost::multi_array。

问题我似乎能够分配内存,但我无法更改或访问任何元素。

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

typedef boost::multi_array<int, 2> array_type;

int main()
{
    array_type *A = new array_type;

    A->resize( boost::extents[2][2] );

    A[1][1] = 2;

    std::cout << A[1][1] << std::endl;

    delete A;

    return 0;
}

编译器说:

C:\Coding\Code Projects\C++\Source Files\Console\main-read.cpp|14|error: no match for 'operator<<' in 'std::cout << boost::multi_array_ref<T, NumDims>::operator[](boost::multi_array_ref<T, NumDims>::index) [with T = int; unsigned int NumDims = 2u; boost::multi_array_ref<T, NumDims>::reference = boost::detail::multi_array::sub_array<int, 1u>; boost::multi_array_ref<T, NumDims>::index = int](1)'|.

我已经尝试过多种声明 A 的方法,但似乎找不到解决方案。任何帮助,将不胜感激。

最佳答案

以下解决方案适用于我。抱歉之前的困惑。

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

typedef boost::multi_array<int, 2> array_type;

int main()
{
    array_type *A = new array_type(boost::extents[2][2]);
    (*A)[1][1] = 2;
    std::cout << (*A)[1][1] << std::endl;
    delete A;
    return 0;
}

关于c++ - 从 A* 存储路径,使用 operator::new 和 boost::multi_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17970588/

相关文章:

c++ - pthread 在完成后泄漏内存

c++ - 在 C++ 中将数字转换为具有指定长度的字符串

c++ - 释放内存时出错

c++ - 为什么我的作用域锁比手动锁更快?

c++ - 如何使用 Linux glibc 获取 LWP?

c++ - boost::log::r​​ecord_view 赋值运算符

c++ - 在循环结束时崩溃控制台应用程序。寻求建议。 (内图)

c++ - 查看内存窗口中的数据

c++ - 如何在 C++ 中处理数组(在堆栈上声明)?

CyclicBarrier 中的 C++ 倒计时使用原子变量出错 [请使用无锁解决方案]