[C++]いくつかの基本的な標準ライブラリタイプ


usingネーミングスペース
using namespace std;
using std::cin; using std::cout;    //    cin,cout

ヘッダファイルにusing宣言は含まれない
stringタイプ
初期化
基本操作:size(),empty(),下付き[]など
辞書順比較:<,>など
getline(cin, str);//1行のリターンを読みstrに保存しますがリターンは保存しません
string::size_type:記号なしで、長さを保存するのに十分
vectorタイプ
初期化
vector<My_Type> t1;
vector<int> ivec1(10, -1);    //  -1
vector<int> ivec2(11);        //     0
vector<int> iv3c3{10, -1};    //10 -1

vs 2010はサポートされていません{}
vectorの効率問題
しばらく
基本操作:=,=,>,push_back(t),[]アクセス,修正のみ
下書きが合法であることを確保し、オーバーフローを防止する
反復器
コンテナ内の要素へのアクセス
auto b = v.begin();    //     
atuo e = v.end();      //      

タイプはvector::iterators
vector::const_iterators、読むしか書けない
実際のサンプル
vector<char> str(10, 'f');
for(auto it = str.begin(); it != str.end(); it++)
    cout << (char)toupper(*it);

反復器を使用して循環体にアクセスするコンテナに要素を追加しないでください.反復器が無効になる可能性があります.
反復演算
直接加減して、不等号で比較することができて、後ろに寄るほど大きくなります.
減算されたタイプはdfferenceです.type、距離を表します.
単純な二分検索
auto b = vint.end(), f = vint.begin();
    auto mid = f + (b - f) / 2;
    int num;
    cin >> num;
    while(f <= b && mid != vint.end())
    {
        if(*mid == num)
        {
            cout << "success" << endl;
            break;
        }
        else if(*mid < num)
        {
            f = mid + 1;
        }
        else if(*mid > num)
        {
            b = mid - 1;
        }
        mid = f + (b - f) / 2;
    }
    if(f > b || mid == vint.end())
        cout << "failed" << endl;

配列を使用してvectorを初期化する
int intarr[] = {1, 2, 3, 4, 5};
vector<int> vec1(intarr, intarr + 5);
vector<int> vec2(begin(intarr), end(intarr));