banner
苍术

苍术

不探索,无进步 [email protected]

c++ STL ライブラリ(未完成)

構造図#

構造図

set(集合)#

内部で自動的に順序が付けられ、重複要素を含まない コンテナ

#include <set>
set<int> name;
set<double> name;
set<char> name;
set<struct node> name;
set<set<int> > name;//注意:> >の間にスペースを入れる
set<int> arr[10];

set コンテナ内の要素のアクセス#

set はイテレータ (iterator) を使用してのみアクセスできます(vector や string 以外の STL コンテナは *(it+i) のアクセス方法をサポートしていません)

set<int>::iterator it;
set<char>::iterator it;
    for (set<int>::iterator it = st.begin(); it != st.end(); it++)
    {
        cout << *it << endl;
    }

よく使われる関数#

insert(value)#

    st.insert('C');

find(value)#

find (value) は、set 内の value に対応するイテレータを返します。つまり、value のポインタ(アドレス)です

cout << *(st.find(2)) << endl;

erase(it)#

st.erase(st.find(100)); //find()関数で100を見つけ、eraseで削除する

erase(iteratorBegin , iteratorEnd)#

左閉右開

    st.erase(it, st.end());

size()#

    cout << st.size() << endl;

vector(ベクトル)#

可変長配列

#include <vector>

vector<int> name;
vector<double> name;
vector<char> name;
vector<struct node> name;
vector<vector<int> > name;//注意:> >の間にスペースを入れる

vector<int> array[SZIE]; //2次元可変長配列

2 次元配列では、1 次元形式はアドレスです。例:

    int arr[3][2];//3行2列のアドレスを定義する
    cout<<arr[0]<<endl; //arrの1行目のアドレスを出力する

output:

0x61fe00 //arrの1行目のアドレス

vector コンテナ内の要素のアクセス#

(1)インデックスを使用してアクセスする

    cout<<vi[0]<<endl;

(2)イテレータを使用してアクセスする

イテレータ(iterator)はポインタと考えることができます

vector<型名>::iterator 変数名;

vector<int>::iterator it;
vector<double>::iterator it;

    vector<int>::iterator it=v.begin();
    for (int i = 0; i < v.size(); i++)
    {
       cout<<it[i]<<" ";
    }

    vector<int>::iterator it=v.begin();
    for (int i = 0; i < v.size(); i++)
    {
       cout<<*(it+i)<<" ";
    }

    //vectorのイテレータはit<v.end()の書き方をサポートしていないため、ループ条件はit!=v.end()のみです
    for (vector<int>::iterator it=v.begin(); it!=v.end();it++)
    {
        cout<<*it<<" ";
    }


vector のよく使われる関数の例#

(1)push_back(item)#

        v.push_back(i);

(2)void pop_back()#

        v.push_back(i);

(3)size()#

    cout<<v.size()<<endl;

(4)clear()#

    v.clear();

(5)insert()#

insert(__position,__x);

v.insert(v.begin()+2,-1); //v[2]の位置に-1を挿入する

(6)erase () 左閉右開#

erase(__position); //要素を1つ削除する
   v.erase(v.begin()+3);

erase(__positionBegin,__positionEnd);//範囲内の要素を削除する
    v.erase(v.begin()+1,v.begin()+4);
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。