存储来自A*的路径,使用运算符:new和boost::multi_array

Storing path from A*, using operator::new with boost::multi_array

本文关键字:new 运算符 boost array multi 路径 存储      更新时间:2023-10-16

我第一次尝试使用动态内存分配。我想为一个2维动态数组分配内存,以存储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:CodingCode ProjectsC++Source FilesConsolemain-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;
}