vector型とは
c++で配列の長さを変えることができる配列を扱うためのクラス
また、この長さを変えることができる配列のことを可変長配列という
vectorをincludeするためにはvectorというライブラリをincludeする。
vectorは以下のように宣言する
vector<型名>変数名;
要素を先に確保して、さらに全ての要素を同じ値で初期化したい時は
vector<型名>変数名(要素数);
vector<型名>変数名(要素数,値);
c++11以降は配列のように直接値を入れることができる
vector<型名>変数名={要素1,要素2};
また、vectorで二次元以上の配列を宣言するには
vector>変数名;
int ar[] = {1, 2, 3, 4, 5, 6, 7};
vector v{9, 8};
v.assign(&ar[0], &ar[3]); // v の内容は {1, 2, 3} になる
vector v{9, 8};
v.assign(3, 1); // v の内容は {1, 1, 1} になる
const int SZ = 10; // 要素数
std::vectorv(SZ); // 指定要素数で、vector を生成
for(int i = 0; i < SZ; ++i)
v[i] = i; // 要素を 0, 1, 2, 3, ... 9 に設定
const int SZ = 10; // 要素数
std::vectorv(SZ); // 指定要素数で、vector を生成
for(int i = 0; i < SZ; ++i)
v.at(i) = i; // 要素を 0, 1, 2, 3, ... 9 に設定
std::vector v{1, 2, 3, 4};
std::vector::iterator itr = v.begin(); // 最初の要素を指すイテレータ
std::cout << *itr << "\n"; // 最初の要素の値を表示
++itr; // 次の要素に移動
*itr = 9; // 二番めの要素の値を 9 に変更
std::vector v(100);
for(int i = 0; i < 100; ++i)
v[i] = rand() % 100;
初期値 0 で、10個の int型 vector オブジェクトを生成し、[5] の位置に 7 を挿入するコードを書きなさい
std::vector v(10, 0);
v.insert(v.begin() + 5, 7);
std::vector v{3, 1, 4, 1, 5};
v.pop_back(); // 末尾データ(この場合は 5)を削除
std::vector v{3, 1, 4, 1, 5};
int last = v.back(); // 末尾データを取り出しておく
v.pop_back(); // 末尾データ(この場合は 5)を削除
std::vector v, z;
v, z にデータを追加
v.swap(z); // v と z の内容を入れ替える
std::vector v{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::cout << std::count(v.begin(), v.end(), 5) << "\n"; // 要素5の数を返す
include
.....
std::vector v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::cout << std::accumulate(v.begin(), v.end(), 0) << "\n";
↑最初から最後まで要素を全加算最後の0は初期値で通常は0
include
.....
std::vector v{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::sort(v.begin(), v.end());
↑まあ普通のソート
std::vector v{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::reverse(v.begin(), v.end()); // 順序反転
for(auto x : v ) std::cout << x << " ";
std::cout << "\n";
↑要素の順番を逆にする