1

初めて動的メモリ割り当てを使用しようとしています。A* 関数からのパスを格納するために、2 次元の動的配列にメモリを割り当てたいと考えています。仕事の配列は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 を宣言する方法を試してみましたが、解決策が見つからないようです。任意の助けをいただければ幸いです。

4

1 に答える 1

0

次の解決策は私にとってはうまくいきます。以前は混乱させてすみません。

#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;
}
于 2013-07-31T14:29:36.993 に答える