C++のコンテナ list メモ

オブジェクトを格納するときは,

が必要.

使えそうな関数.

push_front() 先頭に値を追加
push_back() 末尾に値を追加
pop_front() 先頭の値を削除
pop_back() 末尾の値を削除
insert() 指定したところに挿入
marge() list1.marge(list2) list1に結合され2はカラになる
sort() lisq1.sort() ソートされる
size() サイズ
empty() 空かどうか
begin() 先頭を指す反復子
end() 末尾を指す反復子


使い方メモ.

#include <iostream>
#include <list>
using namespace std;

int main(){
  list<char> li;

  cout << "# push_back()" << endl;
  for(char c='A'; c<='Z'; c++){
    li.push_back(c);
  }

  list<char>::iterator it;
  it = li.begin();
  while(it != li.end()){
    cout << *it;
    it++;
  }
  cout << endl;

  cout << "------------------------------" << endl;
  cout << "# push_front()" << endl;
  for(char c='a'; c<='z'; c++){
    li.push_front(c);
  }

  it = li.begin();
  while(it != li.end()){
    cout << *it;
    it++;
  }
  cout << endl;

  cout << "------------------------------" << endl;
  cout << "# size()" << endl;
  cout << li.size() << endl;

  cout << "------------------------------" << endl;
  cout << "# 後ろから10こpop:pop_back()" << endl;
  for(int i=0; i<10; i++){
    li.pop_back();
  }
  cout << "# 前から5こpop:pop_front()" << endl;
  for(int i=0; i<10; i++){
    li.pop_front();
  }
  it = li.begin();
  while(it != li.end()){
    cout << *it;
    it++;
  }
  cout << endl;

  cout << "------------------------------" << endl;
  cout << "# sort()" << endl;
  li.sort();

  it = li.begin();
  while(it != li.end()){
    cout << *it;
    it++;
  }
  cout << endl;

  cout << "------------------------------" << endl;
  cout << "# marge()" << endl;
  list<char> li2;

  for(char c='0'; c<='9'; c++){
    li2.push_back(c);
  }
  list<char>::iterator it2 = li2.begin();
  cout << "これを結合:";
  while(it2 != li2.end()){
    cout << *it2;
    it2++;
  }
  cout << endl;

  li.merge(li2);
  cout << "li:";
  it = li.begin();
  while(it != li.end()){
    cout << *it;
    it++;
  }
  cout << endl;

  cout << "li2:" << endl;
  it2 = li2.begin();
  while(it2 != li2.end()){
    cout << *it2;
    it2++;
  }
  cout << endl;
  cout << "li2はからになる." << endl;
}