共享_ptr中多功能数组的类型是什么
What is the type of a multidim array in shared_ptr?
我在类型铸造方面有一些问题。这是工作代码:
void init(signed char[16][16][16])
{
}
int main()
{
auto cache = new signed char[16][16][16];
init(cache);
return 0;
}
,如果在Windows中编译,这是一个有问题的代码。在Linux中,此代码正常工作:
int main()
{
std::shared_ptr<signed char[16][16][16]> ptr;
ptr.reset(new signed char[16][16][16]);
init(ptr.get());
return 0;
}
msvs给我一个错误:错误c2664'void init(签名char [] [16] [16](':无法转换参数1从'签名char(*([16] [16] [16] [16]'to转换为'签名char [] [16] [16]'
如何使用共享_ptr正确使用多功能数组?什么是"自动缓存"的类型名称?
以下是3D shared_ptr
using myType = signed char;
using ManagedInt = std::shared_ptr<std::shared_ptr<std::shared_ptr<myType>>> ;
const int N = 16;
{
auto managedMat = ManagedInt();
managedMat.reset(new std::shared_ptr<std::shared_ptr<myType>>[N], [](auto p) {
for(uint32_t i = 0; i <N; ++i){
p->reset();
}
});
for(uint32_t i = 0; i< N;++i){
managedMat.get()[i].reset(new std::shared_ptr<myType>[N], [](auto p) {
for(uint32_t i = 0; i <N; ++i){
p->reset();
}
});
for(uint32_t j = 0; j < N; ++j){
managedMat.get()[i].get()[j].reset(new myType[N], [](auto p) {
delete[] p;
});
}
}
for(uint32_t i = 0; i < N; ++i)
for(uint32_t j = 0; j < N; ++j)
for(uint32_t k = 0; k < N; ++k)
managedMat.get()[i].get()[j].get()[k] = j;
for(uint32_t i = 0; i < N; ++i)
for(uint32_t j = 0; j < N; ++j)
for(uint32_t k = 0; k < N; ++k)
std::cout<<managedMat.get()[i].get()[j].get()[k];
}
live
我建议使用向量,如果您可以
相关文章:
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 类名后跟括号的类型是什么
- std::chrono::duration::count函数的实际结果类型是什么
- c++运算符重载-我实际返回的操作数类型是什么
- 运算符和返回类型是什么意思?
- 指向 2D 数组的指针的类型是什么?
- RSA_verify中预期的数据类型是什么,无法验证从 Java 生成的签名
- 共享_ptr中多功能数组的类型是什么
- 构造函数的类型是什么?
- 字符串中单个字符作为数组的数据类型是什么
- 该结构继承的类型是什么
- 如果我获得Integer和Double的产品,输出的数据类型是什么
- C 中被视为可可的类型是什么
- 当函数采用右值引用时,函数中该变量的类型是什么?
- STD :: SETW,STD :: SETFILL等的真实返回类型是什么?
- 模板类中引用的引用的类型是什么
- const自动参考绑定到(NULL)指针 - 实际类型是什么
- 包含通过引用捕获的 lambda 函数的"variable"的类型是什么?
- 通过插座发送的内容的数据类型是什么