C++にて、std::vectorの二重配列をポインタで関数に渡して表示させたいです。
コードは以下です。
c++
1#include <vector> 2#include <iostream> 3 4void print_arrays(std::vector<std::vector<double>> *arrays) 5{ 6 for(int i = 0; i < arrays->size(); ++i){ 7 for(int j = 0; j < arrays[i].size(); ++j){ //arrays[i].size()が非常に大きな値になってしまう 8 std::cout << arrays[i][j] << " "; // コンパイルエラー 9 } 10 std::cout << std::endl; 11 } 12} 13 14int main() 15{ 16 std::vector<std::vector<double>> arrays = {{1,2,3}, {11,12,13}}; 17 18 print_arrays(&arrays); 19 20 return 0; 21}
上記のprint_arrays()内で、2箇所、問題があります。
(1)
arrays[i].size()の値が非常に大きな値になってしまっています。
私の環境では12297829382474149390でした。
(2)
arrays[i][j]を参照するとコンパイルエラーになります。
エラーは100行以上出力されているようにみえます。先頭の出力のみ以下に示します。
error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘__gnu_cxx::__alloc_traits<std::allocator<std::vector<double> > >::value_type {aka std::vector<double>}’) std::cout << arrays[i][j] << " ";
ご教授頂けたら幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。