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

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

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

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

解決済

C++ vector配列<構造体>の中のvector配列への代入方法

opyon
opyon

総合スコア1009

C++

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

4回答

0評価

2クリップ

15108閲覧

投稿2018/11/13 23:14

編集2018/11/15 14:23

###追記2
std::vector::insert

iterator insert(const_iterator position, initializer_list<T> il); // (5) C++11 // 挿入位置と初期化子リストを指定するバージョン { v.insert(v.begin() + 1, {"hhh", "iii"}); }

コメント頂いた@yohhoyさん、@epistemeさん、ありがとうございます。

###追記
boost::range::push_back(target, src);
boost::range::push_back
C++ extend a vector with another vector
@LouiS0616さんのコメントのリンクから検索などしていたら偶然見つけましたのでご参考までに。

###解決!(勘違いでした)
初期化する時にまとめて代入出来ることと勘違いしていました。
結論:直接は出来ない が構造体のメンバ関数などを工夫すれば可能になる

回答くださった方ありがとうございました。

###知りたいこと
下記サンプルコードのようなstd::vector<構造体>の中にあるstd::vector<int>への代入方法が知りたいです。
直感的に書いてみたコードだとエラーとなります。
data[0].vec.push_back({1,2,3});

VSCode上ではvecに赤い波下線でエラーが出ています

ご教示よろしくお願いします。

###試したこと
data[0]::vec.push_back({1,2,3});
これもダメでした。

###エラー

no instance of overloaded function "std::vector<_Tp, _Alloc>::push_back [with _Tp=int, _Alloc=std::allocator<int>]" matches the argument list -- argument types are: ({...}) -- object type is: std::vector<int, std::allocator<int>> std::vector<int> Data::vec

###サンプルコード

C++

#include <bits/stdc++.h> struct Data { int id; std::vector<int> vec; }; int main() { std::vector<Data> data(10); data[0].id = 1; //追記2 //コメントより //既存vectorへの要素追加なら data[0].vec.insert(data[0].vec.end(), {4,5,6}); //とも書けます。 //※書き方が分からずここにエラーが出たままです data[0].vec.push_back({1,2,3}); //こうすると当然問題無い data[0].vec.push_back(1); data[0].vec.push_back(2); data[0].vec.push_back(3); getchar(); return 0; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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