STL/ベクトル (C++をもう一度)
[履歴] [最終更新] (2014/12/27 01:54:00)
最近の投稿
注目の記事

サンプルコード

#include <iostream>
#include <vector>
using namespace std;

void Show(const int* intarr, int size) {
    for (int i = 0; i < size; ++i) {
        cout << intarr[i] << endl;
    }
}

int main() {

    // サイズ 2 のベクトル
    vector<int> v(2);
    vector<int> v2(2,0); // 0 で初期化

    // サイズ 4 に拡張
    v.resize(4);
    v2.resize(4,1); // 拡張分を 1 で初期化

    for(int i = 0, size = v2.size(); i < size; ++i) {
        cout << v2[i] << ' ';   //=> 0 0 1 1
        // ↑ v2.at(i) としても同じ出力です。
    }
    cout << endl;

    // 最初の要素と最後の要素
    v.front();
    v.back();

    // メモリ領域を予め 8 要素分確保して
    // resize時などに new やコピーの頻度軽減を狙う
    v.reserve(8);
    cout << v.size() << endl; //=> 4
    cout << v.capacity() << endl; //=> 8

    // 配列のサイズを0にする
    v.clear();                    
    cout << v.size() << endl; //=> 0
    cout << v.capacity() << endl; //=> 8

    // サイズが 0 であれば true
    v.empty();

    // 配列の最後に値を追加
    v.push_back(2);
    cout << v.size() << endl; //=> 1
    cout << v.capacity() << endl; //=> 8

    // 配列の最後の値を削除 (void を返す)
    v.pop_back();
    cout << v.size() << endl; //=> 0
    cout << v.capacity() << endl; //=> 8

    // 配列の先頭のアドレスを返す
    vector<char> vstr(4);
    vstr[0] = 's';
    vstr[1] = 't';
    vstr[2] = 'r';
    vstr[3] = '\0';
    cout << &vstr[0] << endl; //=> str

    Show(&v2[0], v2.size());

    return 0;
}
関連ページ
    概要 配列のように複数の要素の入れ物として機能するクラスをコンテナとよびます。コンテナクラスには vector、list、queue/stack などがあります。それぞれのコンテナクラスはクラステンプレートとして提供されており、したがってヘッダファイルを include するだけで使用できます。ヘッダファイルにはコンテナクラスのクラステンプレートだけでなく、そのコンテナのイテレータクラスのクラス
    概要 限られた時間の中で問題を解くために必要となる、競技プログラミングにおける基本的な処理のチートシートです。競プロにおけるメジャー言語 C++ を利用します。その際 C++11 の機能は利用せず C++03 の機能の範囲内で記述します。 頻度高く定期的に開催されるコンテスト AtCoder Codeforces
    サンプルコード my_class.h #ifndef MY_CLASS_H_ #define MY_CLASS_H_ // 関数テンプレート https://www.qoosky.io/techs/22b50b7062 と同様、 // テンプレートは通常ヘッダファイルにすべてを記述する必要があります。 // ヘッダファイルでの using 使用は好ましくないため std::cout 等とします