質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2025閲覧

vectorの多重配列をポインタで扱う方法

torimingo

総合スコア122

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/08/20 23:53

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] << " ";

ご教授頂けたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
ありがとうございました。

c++

1 for(int j = 0; j < (*arrays)[i].size(); ++j){ 2 std::cout << (*arrays)[i][j] << " ";

投稿2019/08/21 00:02

torimingo

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問