ผลต่างระหว่างรุ่นของ "Psl/stl"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 100: แถว 100:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== erase ===
+
=== pair / erase ===
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 
#include <set>
 
#include <set>

รุ่นแก้ไขเมื่อ 06:52, 16 กุมภาพันธ์ 2558

List / iterator

#include <list>
#include <cstdio>

using namespace std;

list<int> lst;

main()
{
  lst.push_back(10);
  lst.push_back(20);
  lst.push_back(30);

  list<int>::iterator i = lst.begin();
  while(i != lst.end()) {
    printf("%d\n", *i);
    i++;
  }
}

erase โดยระบุ iterator

#include <list>
#include <cstdio>

using namespace std;

list<int> lst;

void print_list(list<int>& lst)
{
  list<int>::iterator i = lst.begin();
  while(i != lst.end()) {
    printf("%d\n", *i);
    i++;
  }
}

main()
{
  lst.push_back(10);
  lst.push_back(20);
  list<int>::iterator i20 = lst.end();
  i20--;
  lst.push_back(30);

  print_list(lst);
  printf("-----\n");
  lst.erase(i20);
  print_list(lst);
}

Set

#include <set>
#include <cstdio>

using namespace std;

set<int> iset;

void print_set(set<int>& s)
{
  for(set<int>::iterator i = s.begin();
      i != s.end(); ++i) {
    printf("%d\n", *i);
  }
}

main()
{
  set<int> s;
  s.insert(10);
  s.insert(100);
  s.insert(50);
  s.insert(30);

  print_set(s);

  s.insert(-100);
  printf("%d\n",*(s.begin()));
  s.insert(-200);
  printf("%d\n",*(s.begin()));
  s.insert(-150);
  printf("%d\n",*(s.begin()));

  set<int>::iterator i = s.find(-200);
  if(i != s.end()) {
    s.erase(i);
  }
  printf("%d\n",*(s.begin()));
}

pair / erase

#include <set>
#include <cstdio>

using namespace std;

typedef pair<int,int> int_pair;
set<int_pair> s;

main()
{
  s.insert(make_pair(0,0));

  pair<set<int_pair>::iterator,bool> res = s.insert(int_pair(10,0));

  s.insert(int_pair(15,10));
  s.insert(int_pair(10,7));

  s.erase(res.first);
  
  for(set<int_pair>::iterator i = s.begin();
      i != s.end(); i++) {
    printf("%d, %d\n", i->first, i->second);
  }
}