เข้าถึงมิติของเค้าหลาย arrays ในภาษา C++language

0

คำถาม

ตอนที่ฉันวิ่งต่อไปนี้กับคำเตือนธงฉันให้เป็นประเภทการแปลงเตือน

#include <boost/multi_array.hpp>

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

เห็นข้อความแจ้งเตือนทางด้านล่างนี้ นี่หมายความว่าฉันเป็น implicitly เปลี่ยนมานานโดยไม่เซ็น int ได้เข้าเป็นปกติ'int'?

ถ้าอย่างนั้นฉันคิดว่านี่คือสิ่งที่ฉันต้องการ(ต้องแสดงคำนวณกับ nrows,ncols หลังจากนั้น)แล้วทำไมฉันจะต้องทำการแปลง explicit?

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

คำตอบที่ดีที่สุด

1

นี่หมายความว่าฉันเป็น implicitly เปลี่ยนมานานโดยไม่เซ็น int ได้เข้าเป็นปกติ'int'?

ใช่นั่นคือสิ่งที่มันมีความหมายยังไง

ถ้าคุณไม่ต้องการแจ้งเตือนอย่างนั้นก็อย่าทำ nrows แล้ว ncols เป็นประเภท int. ที่ง่ายที่สุดสิ่งที่ต้องทำคือแค่ปล่อยให้คอมไพเลอร์อนุมานคนประเภท i.e.

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

หรือคุณสามารถทำให้พวกเขาประเภท size_tนั่นคือสิ่งที่มาตรฐานห้องสมุดใช้สำหรับขนาดของ containers และจะไม่ส่งเสียไปฉันเตือน

2021-12-04 22:35:52

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่