Accéder à la dimension de boost multi-tableaux en C++

0

La question

Quand je lance la suite avec des drapeaux-je obtenir une conversion de type avertissement.

#include <boost/multi_array.hpp>

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

Voir le message d'avertissement ci-dessous. Est-ce à dire que je suis implicitement la conversion d'un "long unsigned int' en un 'int'?

Si oui, je pense que c'est ce que j'ai envie (besoin d'effectuer des calculs avec nrows, nrows par la suite), et alors comment pourrais-je faire la conversion explicite?

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

La meilleure réponse

1

Est-ce à dire que je suis implicitement la conversion d'un "long unsigned int' en un 'int'?

Oui, c'est ce qu'il signifie.

Si vous ne voulez pas l'avertissement alors ne faites pas nrows et ncols être de type int. La meilleure chose à faire est de simplement laisser le compilateur déduire le type c'est à dire

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

ou vous pouvez faire d'eux de type size_tqui est-ce que la bibliothèque standard utilise pour la taille des conteneurs, et de ne pas émettre une alerte.

2021-12-04 22:35:52

Dans d'autres langues

Cette page est dans d'autres langues

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