访问的维度的提高多数组在C++

0

的问题

当我运行下面的警告标志我得到一个类型转换的警告。

#include <boost/multi_array.hpp>

void function (boost::multi_array<unsigned char, 2> matrix) {
  int nrows = matrix.shape()[0];
  int ncols = matrix.shape()[1];
}

看到警告信息如下。 这是不是意味着我是隐含地转换成'长unsigned int'进入一个经常'int'?

如果是这样,我认为这就是我想要(需要执行的计算与nrows,ncols之后),所以我将如何使转换的明确的?

image.cpp:93:32: warning: conversion to ‘int’ from ‘boost::const_multi_array_ref<float, 2ul, float*>::size_type {aka long unsigned int}’ may alter its value [-Wconversion]
     int nrows = matrix.shape()[0];
boost c++
2021-11-20 23:46:16
1

最好的答案

1

这是不是意味着我是隐含地转换成'长unsigned int'进入一个经常'int'?

是的,这是意味着什么。

如果你不想要警告那就不要做 nrowsncols 的类型 int. 最简单的事情要做的就是只是我们编译器推断出的类型,即

auto nrows = matrix.shape()[0];
auto ncols = matrix.shape()[1];

或者你可以使他们的类型 size_t,这是什么标准图书馆使用的尺寸的容器,不会发出警告。

2021-12-04 22:35:52

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................