L'accesso a dimensione di boost multi-array in C++

0

Domanda

Quando ho eseguito le seguenti operazioni con avviso di bandiere ottenere una conversione del tipo di avviso.

#include <boost/multi_array.hpp>

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

Vedere il seguente messaggio di avviso. Questo significa che io sono implicitamente la conversione di un 'long unsigned int' in una ' normale 'int'?

Se è così, credo che questo è ciò che voglio (è necessario eseguire calcoli con nrows, ncols in seguito), e quindi come faccio a fare la conversione esplicita?

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

Migliore risposta

1

Questo significa che io sono implicitamente la conversione di un 'long unsigned int' in una ' normale 'int'?

Sì, questo è ciò che significa.

Se non si desidera che il messaggio di avviso e poi non fanno nrows e ncols essere di tipo int. La cosa più semplice da fare è lasciare che il compilatore dedurre il tipo, vale a dire

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

o si può fare di tipo size_tche è ciò che la libreria standard utilizza per le dimensioni dei contenitori e non emettere un avviso.

2021-12-04 22:35:52

In altre lingue

Questa pagina è in altre lingue

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