listからvectorへ

vector はサイズを変更できる配列です。Pythonと同じ0始まりですが、範囲外アクセスを自動で安全に止めるとは限りません。

言語:C++ / 計算量:例の処理による

前提:整数型とオーバーフロー

考え方

  1. vector<int> a(n) で n 個の0。
  2. a.push_back(x) は append(x)。
  3. for(auto x:a) は値のコピー。変更には auto& x。

具体例

a=[1,2,3] を2倍にするなら for(auto& x:a) x*=2;。& がないと元の配列は変わりません。

実装

#include <iostream>
#include <vector>
using namespace std;
int main(){vector<int>a={1,2,3};for(auto& x:a)x*=2;for(auto x:a)cout<<x<<" ";}

注意する条件

a[-1] は末尾ではありません。末尾は a.back()。空かどうかを先に確認します。

確認問題

{1,2,3} を参照ループで2倍にした末尾は?

解答と理由

6

元の3が6に更新されます。

実装課題

N と配列 A が2行。総和を long long で出す。N≤200000、|A_i|≤10^9。

入力:
3
1 2 3
出力:
6
参考実装
#include <iostream>
#include <vector>
using namespace std;
int main(){int n;cin>>n;vector<long long>a(n);long long s=0;for(auto& x:a){cin>>x;s+=x;}cout<<s<<"\n";}

読了の記録・下書き・メモへ

関連する公式資料・課題