C ++ _STL学習1日目

いくつかの学習では、C ++ STL

3つのコアコンポーネントで1.STL

パッケージ 説明
コンテナ(コンテナ) コンテナは、オブジェクトセットの種類を管理するために使用されます。たとえば、両端キュー、リスト、ベクトル、マップのために。
アルゴリズム(アルゴリズム) アルゴリズムは、コンテナに適用されます。彼らは、初期化、ソート、容器の内容を検索し、変換動作が行われるなど、さまざまな操作を実行するための方法を提供します。
イテレータ(イテレータ) 要素は、オブジェクトのコレクションを横断するためのイテレータ。

2.Algorithmヘッダファイル

2.1ソート機能
使用法:
sort(Array name;the last pointer)

1 @二つのパラメータ、最初のものに相当の配列であるヘッドポインタの二番目の配列テールポインタ

// 2は、様々な配列の整数、ダブル、チャー及び(チャー本質的記憶ASCIIコード)の他の種類のために使用され

完全なコード:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a[]={9,8,7,6,5,4,3,2,1,0};
    int len= sizeof(a)/ sizeof(int);
    sort(a,a+len);
    for(int i=0;i<len;i++)
        cout << a[i] << " ";
    cout << endl;
    return 0;
}

3.STL - 文字列

//注、そこに文字列中のiostreamが、また、文字列のヘッダーファイルを使用する必要があります

//#include <string>

3.1直接割り当て
    string s1="abcde";
    string s2="f";
    cout << s1 <<endl << s2 << endl;
3.2コンストラクタ
具体的な使用方法:
  • STR(のconstのchar * CH)直接割り当て
  • STR(size_tのN、チャーCH)の割り当てN CH文字
  • 前者からSTR(CHAR * CH、size_tのN)ビットポインタCH
  • スタートビット長のインデックスからSTR(文字列&STR、size_tのインデックス、size_tの長さ)がかかり
  • STR(文字列&strの)構成されたコピー
完全なコード:
string s1();  // si = ""
string s2("Hello");  // s2 = "Hello"
string s3(4, 'K');  // s3 = "KKKK"
string s4("12345", 1, 3);  //s4 = "234",即 "12345" 的从下标 1 开始,长度为 3 的子串

cout << s1 << endl << s2 << endl << s3 << endl << s4 << endl;
3.3割当メンバ関数

あなたは、元の文字列クラスに再割り当てすることができます

string s1("12345"), s2;
s3.assign(s1);  // s3 = s1
s2.assign(s1, 1, 2);  // s2 = "23",即 s1 的子串(1, 2)
s2.assign(4, 'K');  // s2 = "KKKK"
s2.assign("abcde", 2, 3);  // s2 = "cde",即 "abcde" 的子串(2, 3)
3.4 + =文字/アペンドメンバ関数

関数は、文字列クラスから追加することができます

+ =使用法:
string s="123";
s+="4"; //s此时即为“1234”
アペンド使い方
string s1(“123”);
s1.append(s2);  // s1 = "123abc"
3.5データ収集ライン
string s;
getline( cin , s ); //s为string的名字
cout << s ; //可以直接输出一个string类字符串
3.6ソート

また、ソート機能を使用して

string s="987654321";
sort(s.begin(),s.end()); //s.begin相当于头迭代器,s.end是尾迭代器。
cout << s << endl;

境界が配列されている場合、//ここで、バックの最後の要素a「9」のアドレスに()のポイントをs.end。

あなたが最後の要素「9」を印刷したい場合は//必要です cout << *--s.end() << endl ;

3.7 SUBSTRメンバ関数
string s='123456';
s=s.substr(2,4);   //即s='345'
cout << s << endl;
3.8長メンバ関数

この関数は、文字列の長さを直接決定することができます

string s="987654321";
cout << s.length() << endl;
3.9トラバース文字列

されている3つの主要な伝統的なトラバースイテレータの使用

string s="987654321";
//直接循环
for(int i=0;i<s.length();i++) cout << s[i];
cout << endl;
//迭代器法
for(string::iterator it =s.begin(); it!=s.end(); ++it) cout << *it;
cout << endl;
//简便的迭代器法
for(auto it=s.begin(); it!=s.end(); ++it) cout << *it;
cout << endl;

4. STL - ベクトル

必要な//ヘッダファイル#include <vector>

4.1建設
vector<type> name(num_length,num_to_input); //有两个参数,第一个是长度,第二个是用来填充的数
例:
vector<int> v;//定义一个空vector
vector<int> v2(4);//定义一个4个大小的vector,初始为0
vector<int> v3(4,6);//定义一个4个大小的vector,初始为6
vector<int> v4{5,4,3,2,1};//可以直接用大括号输入数据
印刷:
for(auto x:v3) cout<<x;         //依次打印每一个x
または[]の要素を得るために4.2
vector<int> v{5,4,3,2,1};
cout << v[4] << endl;                   //打印获得1
cout << v.at(4) << endl;            //打印获得1
4.3共通機能
v.push_back(num_to_input);          //在vector组的后面用数字追加内容,该数字可以不止一个
v.resize(mount of num,num_to_input);    //重制长度,用后面的数字填充上去
v.erase(v.begin());     //删除第一个元素
v.erase(--v.end());     //删除最后一个元素

//ベクターは、消去、自動配列の長さを引いた後、配列変数であるため、1

例えば
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);                         //此时vector为{‘1’,'2','3'};
v.erase(v.begin()+1);               //删除begin+1,即为删除2,此时数组长度由3变2,数组变为{'1','3'}
v.erase(v.begin()+1);               //此时begin+1指向3,删除后,数组长度由2变1,数组变为{'1'}
for(auto x:v) cout << x;
完全なコード:
vector<int> v;
v.push_back(1);
v.push_back(2);
v.resize(5,0);
v.erase(v.begin());
v.erase(--v.end());
for(auto x:v) cout << x;
4.4取得し、最後の要素
最初の要素を取得します。
cout << v.front() << endl;
cout << &v[0] << endl;
cout << *v.begin() << endl;
最後の要素を取得します。
cout << v.back() << endl;
cout << v.[v.size-1];           //size是获取vector的大小
cout << *--v.end();
4.5ソート

ソート機能を使用してソートし、三番目のパラメータは、コンパレータで、デフォルトはあまり書かれていません ()、小規模から大規模までデフォルトであります

vector<int> v{4,0,8,50,-4,3};
sort(v.begin(),v.end(),less<int>());        //从小到大排序
sort(v.begin(),v.end(),greater<int>());     //从大到小排序
for(auto x:v) cout << x << " ";
4.6トラバーサル
vector<int> v{1,2,3,4,5};
//传统方法
for(int i=0;i<v.size();i++)     cout << v[i] <<" " ;
cout << endl;
//迭代器法
for(vector<int>::iterator it=v.begin();it!=v.end() ;++it) cout << *it << " ";
cout << endl;
//简易迭代器法,c++11的特性
for(auto x:v)   cout << x << " " ;
cout << endl;

ベクターは、様々なタイプのアレイ、例えば整数、文字などとすることができるので、ここでは通常の方法イテレータ<タイプ>に接続する必要があり、それ自体に種類を示します

おすすめ

転載: www.cnblogs.com/miceputil/p/12305870.html