El acceso a la dimensión de impulso de múltiples matrices en C++

0

Pregunta

Cuando yo ejecute el siguiente con las banderas de advertencia puedo obtener una conversión de tipo de advertencia.

#include <boost/multi_array.hpp>

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

Ver mensaje de advertencia a continuación. ¿Significa esto que soy, implícitamente, la conversión de un 'long unsigned int' en un regular 'int'?

Si es así, yo creo que esto es lo que yo quiero (necesitan realizar cálculos con nrows, ncols después), y entonces, ¿cómo puedo realizar la conversión explícita?

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

Mejor respuesta

1

¿Significa esto que soy, implícitamente, la conversión de un 'long unsigned int' en un regular 'int'?

Sí, eso es lo que significa.

Si usted no desea que la advertencia luego no hacer nrows y ncols ser de tipo int. La cosa más fácil de hacer es simplemente dejar que el compilador deduce el tipo es decir,

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

o usted puede hacer de ellos de tipo size_tque es lo que la biblioteca estándar se utiliza para el tamaño de los recipientes y de no emitir una advertencia.

2021-12-04 22:35:52

En otros idiomas

Esta página está en otros idiomas

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