kyos1704活動記

適当に考えたことや調べたことを垂れ流すものです。質問等ありましたらtwitter:@kyos1704 に質問してください。

構造体の生成について-構造体をvectorに入れたりするときの書き方とか

ダイクストラとかを書くときにコンストラクタ付きの構造体を書いて、vectorに突っ込むみたいなことを良くしていて、

struct S{
  S(){}
  S(int a,int b){
    x=a;y=b;
  }
  int x,y;
};
int main(){
  vector<S> tmp;
  tmp.push_back(S(1,2));
}

みたいなことを良くしていたのだが、さすがに冗長なのでどうにかできないかなと思っていた

struct S{
  int x,y;
};

int main(){
  vector<S> tmp;
  tmp.push_back((S){1,2});
}

でよさそう。
ちなみに

  S a = {1,2};

で初期化できたりする。


ついでに教えてもらったこと

連番でvectorに突っ込む std::iotaとか
コンストラクタがあるやつをvectorに追加するときには
vec.emplace_back(a,b,c...)みたいなこともできるらしい