存储来自A*的路径,使用运算符:new和boost::multi_array
Storing path from A*, using operator::new with boost::multi_array
我第一次尝试使用动态内存分配。我想为一个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;
}
相关文章:
- 如何在C++中使用 new 运算符创建对动态创建的数组的引用?
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 使用 'new[]' 运算符分配内存
- 在C++"new"运算符之后使用"realloc"是否安全?
- "new"运算符是否总是调用构造函数?
- 默认参数中的 c++ new 运算符及其副作用
- 为什么在 c++ 中使用 new 运算符
- 使用new运算符可以将参数作为函数中数组的大小来分配整数数组
- C++ 如何在重载"new"运算符中获取行号和函数名称
- 字符** 使用 new 运算符分配内存
- 如果在没有 new 运算符的情况下初始化,C++是否将类对象视为值类型
- 用指向对象的指针和c++中的new运算符定义对象
- 如何重载模板类的 "new" 运算符?
- 重新定义"new"运算符的目的是什么?
- CUDA错误-虚拟函数,继承,NEW运算符
- "new"运算符和"new"函数的区别
- 在CUDA内核中调用new运算符
- 当我们在指向未分配 new 运算符的对象的指针上使用 delete 时会发生什么
- 使用 new 运算符静态分配对象
- 通过数组和"new"运算符创建的对象,但如何传递参数?