C++スコーラ

vector

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

Vector

vectorとは、必要に応じて自動的にサイズが変更される動的配列です。
通常の配列と同じように扱うことができるだけでなく、
サイズ情報の取得やデータの挿入削除なども可能です。

Vectorの用意

vectorを使うにはインクルードが必要
#include<vector>
宣言は以下のように行う
std::vector<型名> 名前;
型は int や string をはじめ、独自のクラスポインタ型でもOK

要素の追加

末尾への追加

ベクター.push_back([[オブジェクト]]);
※以下 < と > の内側にスペースが有るのはWikiのタグ認識回避のためであり、実際はスペースを開ける必要はない
 vector< string > v;
 v.push_back("Hello ");
 v.push_back("world");
 v.push_back("!!");

要素の削除

pop_back

末尾の要素を削除します。
vector<int> v{0, 1, 2, 3, 4};
v.pop_back();    //  末尾データ(この場合は 4)を削除

erase

任意の場所を削除します。

任意の位置の要素を一つだけ削除

vector<int> v{0, 1, 2, 3, 4};
v.erase(v.begin() + 2);    //  3番目のデータ(この場合は 2)を削除
※begin()はイテレータを呼ばれるポインタのようなもので、
その配列の最初の要素の位置を返します。

任意の範囲の要素を削除

vector<int> v{0, 1, 2, 3, 4};
v.erase(v.begin() + 1, v.begin() + 3);    //  1, 3を削除

要素へのアクセス

[ ]演算子を使う方法

通常の配列と同じようにv[0]のような使い方もできます。
        cout << v.size() << endl; // vの要素数を表示
        for(int i=0, n=v.size(); i < n; i++){
                cout << v[i] << endl; // vの内容を表示
        }

atを使う方法


        cout << v.size() << endl;
        for(int i=0,n=v.size(); i < n; i++){
                cout << v.at(i) << endl;
        }

イテレータを使う方法

whileによるループ
        vector< string >::iterator it;
        it = v.begin();
        while ( it != v.end() ){
                cout << *it << endl;
                it++;
        }

forによるループ
        for ( vector< string >::iterator it = v.begin(), end = v.end(); it < end ; it++ ){
                cout << *it << endl;
        }

記述例

#include <vector>
#include <iostream>
#include <string>

int main(){
    using namespace std;
    vector< string > v;
    v.push_back("Hello ");
    v.push_back("world");
    v.push_back("!!");
    cout << v.size() << endl;

    for(int i=0, n=v.size(); i < n; i++){
        cout << v.at(i) << endl;
    }
    return 0;
}

問題

問題1

at、イテレータによる要素参照を関数化せよ。

問題2

文字列型のベクターを用意せよ。
ユーザの入力を"end"が入力されるまで繰り返し取得し、ベクターの末尾に追加せよ。
入力が終了した後、ベクターの要素数と中身を表示せよ。

問題3

整数型のベクターを用意せよ。
1~5までのランダムな数値を5~10個ベクターに格納し、
格納された数値の合計を表示せよ。



testcounter
合計 -
今日 -
昨日 -
ウィキ募集バナー