我想修改以前没有尺寸的矩阵的值:
ArrayFactory factory;
std::vector<size_t> position = {3, 14, 2, 23};
Array mat_data = factory.createArray<double>({30, 30, 30, 30});
Reference<TypedArray<double>> temp = mat_data[position[0]]; //fails here
for (int i = 1; i < positions.size(); ++i)
mat_temp = mat_temp[positions[i]];
mat_temp[positions.back()] = getMyValue(position);
这给了我以下错误:
提供的索引不足
我知道我能够做到这一点:
mat_data[3][14][2][23] = getMyValue(position);
但是我无法对此进行硬编码,因为算法启动时我不知道position
的大小。
实际解决方案删除了private
,该ArrayElementRef(ArrayElementRef<is_const_ref>&& rhs) MW_NOEXCEPT
在ArrayElementRef.hpp
上隐藏了ArrayElementRef<false> getElementRef(ArrayElementRef<false> elem, std::vector<size_t>& position, size_t pos) {
if (pos >= position.size() - 1)
return std::move(elem);
return getElementRef(elem[position[pos]], position, ++pos);
}
:
ArrayFactory factory;
std::vector<size_t> position = {3, 14, 2, 23};
Array mat_data = factory.createArray<double>({30, 30, 30, 30});
ArrayElementRef<false> mat_temp = getElementRef(mat_data[position[0]], positions, 1);
mat_temp[position.back()] = getMyValue(position);
然后:
private
但是,删除此Testcontainers
是不可取的...