Dostęp do wymiaru kilka tablic boost w C++

0

Pytanie

Kiedy wykonuję następujące z ostrzegawczymi flagami, dostaję ostrzeżenie o konwersji typów.

#include <boost/multi_array.hpp>

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

Cm. komunikat poniżej. Czy to oznacza, że jestem niejawnie przetłumaczone "długi bez znaku int" zwykła "int"?

Jeśli tak, myślę, że to jest to, co chcę (trzeba wykonać obliczenia z pomocą nrows, ncols później), i jak bym zrobił konwersja oczywiste?

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

Najlepsza odpowiedź

1

Czy to oznacza, że jestem niejawnie przetłumaczone "długi bez znaku int" zwykła "int"?

Tak, to, co to znaczy.

Jeśli nie potrzebujesz ostrzeżenie, to nie rób nrows i ncols bądź w swoim rodzaju int. Najprościej po prostu pozwolić kompilator wyprowadzić typu, tj.

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

czy można zrobić ich rodzaju size_tto standardowa biblioteka używa dla określenia wielkości pojemników i nie generuje ostrzeżenie.

2021-12-04 22:35:52

W innych językach

Ta strona jest w innych językach

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