- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在类型转换方面遇到了一些问题。这是工作代码:
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 给我一个错误:Error C2664 'void init(signed char [][16][16])': cannot convert argument 1 from 'signed char (*)[16][16][16]' to '签名字符 [][16][16]'
如何通过 shared_ptr 正确使用 multidim 数组? “自动缓存”的类型名称是什么?
最佳答案
这是一个 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];
}
如果可以的话,我建议使用 vector
关于c++ - shared_ptr 中 multidim 数组的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337031/
我有一个像这样的数组: var ret = ["-37.8497", "144.968", "Albert Park Grand Prix Circuit", "2.76083", "101.738"
我有来自 AJAX 调用的数据响应: {"18:00":{"twopersons":1,"fourpersons":0}} 通过 statsarray = data; 将其存储到变量中 现在我如何循环
这个问题在这里已经有了答案: How to add a new row to an empty numpy array (7 个答案) 关闭 5 年前。 我需要创建一个形状为 (?, 10, 10,
我正在尝试为数值计算的任何维度的数组创建自己的容器。我想使用模板来做到这一点,这样我就可以重载下标运算符 [] 以便它像普通数组和 vector 一样工作,例如访问 a[10][10][10] 等条目
我在类型转换方面遇到了一些问题。这是工作代码: void init(signed char[16][16][16]) { } int main() { auto cache = new sig
我得到了一个 650 行的数组。在我的本地计算机上使用 PDO 插入它需要 10-15 秒。那很慢。这是因为磁盘读/写吗?或者可能是其他原因? 这是我的数组(前 4 行): Array ( [0] =
我目前正在创建一个由来自 mysql 查询的值组成的排序方法。 下面是数组的简要 View : Array ( [0] => Array (
我是一名优秀的程序员,十分优秀!