###追記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; }
まだ回答がついていません
会員登録して回答してみよう