C++学習整理(シーケンスコンテナ)
8722 ワード
じゅんじょようき
1、標準ライブラリarrayは固定サイズを有するarray配列のコピーまたは付与操作
2、assign(arrayを除く):左のコンテナのすべての要素を次のように、要素(のコピー)で置き換えることができます.
3、swapの使用:2つの同じデータ構造の内容を交換することができる(arrayを除いて、swapはいかなる要素に対してコピー、削除あるいは挿入操作を行わないので、定数時間内に完成することを保証できる)4、順序容器に内容を追加する
5、要素がアクセスする時、できるだけc.at(n)を使って、下のnという参照を返して、境界を越えた時に異常を投げ出す.6、要素の削除:(要素を1つだけ削除するか、反復器で指定した範囲を削除することができます)
7、2つのバージョンはlistのすべての奇数、チェーンテーブルと単一チェーンテーブルを削除する
8、容器の大きさを変える
9、vectorオブジェクトの増加vectorおよびstringオブジェクトは、通常、新しい空間を取得する際に、新しい空間よりも大きな空間を割り当てる. 一部メンバー関数:
10、string追加の操作追加の構成方法: substr(pos,n); append(str),replace(pos,erase_num,str); 検索操作:(結果が見つからずstring::nposを返す) 数値変換:
参考『C++Primer』
1、標準ライブラリarrayは固定サイズを有する
array<int,10>;
array<int,20>;
int digs[10] = {0,1,2,3,4,5,6,7,8,9};
int cpy[10] = digs; //error,
array<int,10> digs1 = {0,1,2,3,4,5,6,7,8,9};
array<int,10> cpy1 = digs1;
2、assign(arrayを除く):左のコンテナのすべての要素を次のように、要素(のコピー)で置き換えることができます.
list<string> names;
vector<const char *> oldstyle;
names = oldstyle;//error,
names.assign(oldstyle.cbegin(),oldstyle.cend());//ok, const char* string
list slit(1);//1 , string
slit.assign(10,"Hi");
3、swapの使用:2つの同じデータ構造の内容を交換することができる(arrayを除いて、swapはいかなる要素に対してコピー、削除あるいは挿入操作を行わないので、定数時間内に完成することを保証できる)4、順序容器に内容を追加する
c.insert(p,t)
c.emplace(p,args)
// p ,
//insert emplace :insert , ;emplace 。
// vector,deque,string , ( )
// ,
vector<> v;
list<string> l;
l.insert(l.begin(),"hello!");// l.push_front("hello!");
v.insert(v.end(),10,"hello");// 10
l.insert(l.begin(),l.end()-2,l.end());//
5、要素がアクセスする時、できるだけc.at(n)を使って、下のnという参照を返して、境界を越えた時に異常を投げ出す.6、要素の削除:(要素を1つだけ削除するか、反復器で指定した範囲を削除することができます)
...
c.erase(p)// p ,
c.erase(b,e)//
...
list l;
l.clear();
l.erase(l.begin(),l.end());//
7、2つのバージョンはlistのすべての奇数、チェーンテーブルと単一チェーンテーブルを削除する
//①
list<int> lst = {0,1,2,3,4,5,6,7,8,9};
auto it = lst.begin();
while (it != lst.end()){
if (*it % 2 == 0)
it = lst.erase(it);
else
++it;
}
//②
forward_list<int> flst = {0,1,2,3,4,5,6,7,8,9};
auto pre = flst.before_begin();// ( ),
auto cur = flst.begin();
while (cur != flst.end()){
if (*cur % 2 == 0)
cur = flst.erase_after(pre);
else
pre = cur;
}
8、容器の大きさを変える
list<int> l(10,42);//10g , 42
l.resize(15);//15 , 5 0
l.resize(20,-1);// l 5 , -1
l.resize(5,1);// , 5
9、vectorオブジェクトの増加
c.shrink_to_fit();// capacity size
c.capacity();//c
c.size();//c
c.reserve(n);// n
//reserve , vector , reverse
10、string追加の操作
string s(cp,n);// cp n
string s(s2,pos2);// s2 pos2
string s(s2,pos2,len);
// , ,
//// name , 1
string numbers("0123456789"),name("r2d2");
auto pos = name.find_first_of(numbers);
//// name
auto pos1 = name.find_first_not_of(numbers);
////
int i = 42;
string s = to_string(i);
double d = stod(s);
////********
string s2 = "pi = 3.14";
d = stod(s2.substr(s2.find_first_of("+-.0123456789")));//d = 3.14
参考『C++Primer』