C++ ' da boost çoklu dizilerinin boyutuna erişme

0

Soru

Aşağıdakileri uyarı bayraklarıyla çalıştırdığımda bir tür dönüştürme uyarısı alıyorum.

#include <boost/multi_array.hpp>

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

Aşağıdaki uyarı mesajına bakın. Bu, örtük olarak 'uzun imzasız int' yi normal 'int'ye dönüştürdüğüm anlamına mı geliyor?

Eğer öyleyse, istediğim şeyin bu olduğunu düşünüyorum (daha sonra nrows, ncols ile hesaplamalar yapmam gerekiyor) ve bu yüzden dönüşümü nasıl açık hale getirebilirim?

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

En iyi cevabı

1

Bu, örtük olarak 'uzun imzasız int' yi normal 'int'ye dönüştürdüğüm anlamına mı geliyor?

Evet, bunun anlamı bu.

Eğer uyarı istemiyorsanız o zaman yapmayın nrows ve ncols tipli olmak int. Yapılması en kolay şey, derleyicinin türü çıkarmasına izin vermektir.

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

ya da onları türden yapabilirsin. size_t bu, standart kitaplığın kapsayıcıların boyutu için kullandığı şeydir ve bir uyarı yaymaz.

2021-12-04 22:35:52

Diğer dillerde

Bu sayfa diğer dillerde

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