我试图在Matlab中访问多维数组的一部分 - 它可以这样做:X(2:3, 1:20, 5, 4:7)
但是,元素的数量和范围都没有固定,所以我想提供数组的索引 - 对于上面的例子他们会的
ind1 = [2 1 5 4];
ind2 = [3 20 5 7];
Run Code Online (Sandbox Code Playgroud)
对于固定数量的维度,这不是问题(X(ind1(1):ind2(1),...)但是因为它们不是我不确定如何在Matlab中实现它.有没有办法?或者我应该以不同的方式处理它?
我试图将nullpointer包装为一个唯一的指针作为函数的默认参数.仅使用指针,标题可能如下所示
double f(A* vec = nullptr);
Run Code Online (Sandbox Code Playgroud)
因为我确实需要使用unique_ptr,所以我尝试将其更改为
double f(std::unique_ptr<A>& A vec = nullptr);
Run Code Online (Sandbox Code Playgroud)
要么
double f(std::unique_ptr<A>& A vec = std::unique_ptr<A>(nullptr));
Run Code Online (Sandbox Code Playgroud)
这导致了错误
无法将'nullptr'从'std :: nullptr_t'转换为'std :: unique_ptr&'
和
不能将'std :: unique_ptr&'类型的非const左值引用绑定到'std :: unique_ptr'类型的右值
respecively.有没有办法做到这一点?我对C++比较陌生,所以答案可能很明显.
与问题无关,但是我选择unique_ptr的解释:参数vec用作f中迭代的起始值,并使用指针返回改进的值.计划是如果没有给出起始值,则将指针设置为nullptr,并在程序期间计算起始值.因为我生成了一个新对象,所以我可以看到,在裸指针上使用unique_ptr更安全.