92810
std::coutを使ってnum1,num2を出力したいです。  
以下のコード(1)と(2)があるのですが、この場合のfor文の書き方が分かりません。

```

    struct Data {
    std::shared_ptr<std::array<SomeData, 30>> ptr1; //(1)
    std::shared_ptr<std::vector<std::vector<SomeData>>> ptr2; //(2)
    };
    
    struct SomeData {
    int16_t num1;
    int32_t num2;
    SomeData():
    num1(0),
    num2(0){}
    };
    
```

式(1)(2)を用いる場合、次の関数でnum1とnum2の値を出力するには、どのような記述が効果的でしょうか。

```

    void func(const Data& data_info)
    {
        //記述
    }
    
```
CC BY-SA 4.0
2022-12-15T09:27:17.100
92804
2022-12-15T23:30:16.277
2022-12-15T15:47:04.427
55686
55686
question
c++
スマートポインタを用いた変数の出力方法について
スマートポインタは基本的な操作を通常のポインタと同じようにできるように定義されているので、次のように書けます。

```

    void func(const Data& data_info)
    {
      if (data_info.ptr1) { // nullチェック
        for (const auto& some_data : *data_info.ptr1) { // 逆参照
          std::cout << some_data.num1 << std::endl;
        }
      }
    }
    
```
CC BY-SA 4.0
2022-12-15T23:30:16.277
92810
2022-12-15T23:30:16.277
241
92804
answer