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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 54: แถว 54:
 
   lst.erase(i20);
 
   lst.erase(i20);
 
   print_list(lst);
 
   print_list(lst);
 +
}
 +
</syntaxhighlight>
 +
 +
== Set ==
 +
 +
<syntaxhighlight lang="cpp">
 +
#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()));
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

รุ่นแก้ไขเมื่อ 06:44, 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()));
}