std::swap、std::max、std::min

http://www.geocities.jp/ky_webid/cpp/library/034.html

補助的な関数です。


std::swap関数


値の入れ替えをするだけの関数です。

#include <iostream>
#include <algorithm>
using std::cout; using std::endl;

int main () {
    int a = 10;
    int b = 20;
    
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    
    std::swap(a,b);
    
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    
    return 0;
}
$ main
a = 10
b = 20
a = 20
b = 10

std::max関数


渡された二つの値から大きい方の値を返します。

#include <iostream>
#include <algorithm>
using std::cout; using std::endl;

int main () {
    int a = 10;
    int b = 20;
    
    int result = std::max(a,b);
    
    cout << result << endl;
    
    return 0;
}
$ main
20

また、第三引数に関数ポインタ(及び関数オブジェクト)を渡せば独自に比較処理を通すこともできます。

#include <iostream>
#include <algorithm>
using std::cout; using std::endl;

bool comp_ptr (int* a, int* b) {
    return *a < *b;
}

int main () {
    int a = 10;
    int b = 20;
    
    // ポインタで渡した場合の処理
    int* result = std::max(&a,&b,comp_ptr);
    
    cout << *result << endl;
    
    return 0;
}
$ main
20

std::min関数


渡された二つの値から小さい方の値を返します。

使い方はstd::maxとまったく同じです。


ちなみにstd::maxとstd::minはVC6.0には存在しないそうです。注意が必要ですね。