第24講 set・sortによる並び替え 
第1話 C++のライブラリ 
プログラムの種類は2に分けられます。
アプリケーンとライブラリです。
本サイト作ってきたプログラムは、すべてアプリケーションです。
アプリケーションは、単体で動くプログラムです。
それに対して、ライブラリはアプリケーションに組み込んで使うプログラムで、
ライブラリ単体では使えません。
プラモデルの部品を思い浮かべていただければよいかと思います。
今まで、基本的にはすべて部品を自分で作ってきました。
すでにある既存の部品=プログラムを基本的には利用してきませんでした。

C++にはたくさんのライブラリが用意されていますので、
これを利用しない手はありません。
ここではライブラリという形で用意されているsetとsortによる並び替えを学びます。

まず、setによる並び替えから見ていきます。
setを利用するときはインクルードファイルsetを読み込んでおかなければならないので、、
#include<set>
が冒頭に必要になります。

簡単なプログラム例を組んで説明することにしましょう。
新しいプロジェクトを作成して、次の用のコードを組んでみましょう。
#include<iostream>
#include<set>
#include<stdlib.h>
using namespace std;
int main(){
  set<int> s; //int型のセットsを宣言。sは配列に似ているが[]内添え字では整序できない。
  s.insert(5); //値の代入はinsertを使う。
  s.insert(2);
  s.insert(7);
  s.insert(3);
  s.insert(8);
  set<int>::iterator i; //セットの制御にはイテレータを使う。
  for(i=s.begin();i!=s.end();i++)cout<<*i<<" "; //ポインタの使い方に似ている。
  cout<<endl;
}
実行画面
入門
小さい順になっています。

解説
set<int> s;で配列と似たセットsを定義しています。
ただし、配列に似ているといってもs[0]のように使うことができません。
また、配列の場合
inr s[10];
のようにサイズ(この例の場合10)を最初に指定しておく必要がありますが、
setでは、サイズは代入していくに従って大きくなっていきます。
set<int> s;
の宣言の仕方が今までと違うので違和感を感じると思いますが、
int型にしてset型の変数を定義していると解釈して下さい。
添え字が使えないので、代入はs.insert(5); をつかいます。
setの中に5がセットされたわけです。
普通の添え字が使えないので、セットの制御はイテレータを使います。
set<int>::iterator i;
これでセットを制御するイテレータiが定義されています。
s.begin()はセットのデータの最初のアドレスを意味します。
s.end()はセットの最後のデータの次のアドレスを意味します。
ですから、for文はデータの最初から最後まで動きます。





第23講第6話へ 第2話へ

戻る

C言語 C++講義第1部へ
C言語 C++講義第2部へ
VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)