Aceder a dimensão do impulso multi-matrizes em C++

0

Pergunta

Quando eu execute o seguinte com aviso de sinalizadores de eu obter uma conversão de tipo de aviso.

#include <boost/multi_array.hpp>

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

Consulte a seguinte mensagem de aviso. Isso significa que eu estou, implicitamente, a conversão de um 'long unsigned int' regular 'int'?

Se for assim, eu acho que isso é o que eu quero (preciso executar cálculos com nrows, ncols depois), e então, como que eu iria fazer a conversão 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

Melhor resposta

1

Isso significa que eu estou, implicitamente, a conversão de um 'long unsigned int' regular 'int'?

Sim, isso é o que significa.

Se você não deseja que o aviso de não fazer nrows e ncols ser do tipo int. A coisa mais fácil a fazer é simplesmente deixar que o compilador deduzir o tipo i.e.

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

ou você pode torná-los do tipo size_t, que é a biblioteca padrão usa para o tamanho dos recipientes e não emitem um aviso.

2021-12-04 22:35:52

Em outros idiomas

Esta página está em outros idiomas

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