読者です 読者をやめる 読者になる 読者になる

C++競プロ学習日記(仮)

( 学習記録であり解説Blogではないです )

ABC037-B 編集|AtCoder|std::fill()

B: 編集 - AtCoder Beginner Contest 037 | AtCoder を解きました。
コンテストの日に提出したコードは自分でも謎すぎて説明出来ないので割愛。
提出し直したものを...↓

#include <bits/stdc++.h>
using namespace std;
int main(){
    
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    int N, Q;
    cin >> N >> Q;
    
    vector<int> vc(N);
    
    while(Q--){
        
        int L, R, T;
        cin >> L >> R >> T;
        L--;
        fill(vc.begin() + L, vc.begin() + R, T); //<-----!!!!!!!!!!
    }
    
    for(auto x: vc){
        cout << x << endl;
    }
    
    return 0;
}

std::fill()という、凄く便利な関数を学習しました!!
なんとこれ、配列の指定した位置に対して同じ値を代入できるんですよ...!
今回で言うと vc.begin + Lvc.begin + R の範囲を T の値で全部上書き。
すごいーーー!!!!(超学習的)
vectorの一括初期化にも使えるっぽいです。
使える機会あるといいな〜...

( 参考:std::fill - C++入門 )