Play Siv3D!

ゲームとメディアアートのための C++ ライブラリ「Siv3D」

ユーティリティ

ユーティリティ

Siv3D June 2015 v2

サイズ固定の型
uint8int64 はサイズが環境に依存しない整数型です。

# include <Siv3D.hpp>

void Main()
{
	Println(sizeof(uint8)); // 1

	Println(sizeof(int8)); // 1

	Println(sizeof(uint16)); // 2

	Println(sizeof(int16)); // 2

	Println(sizeof(uint32)); // 4

	Println(sizeof(int32)); // 4

	Println(sizeof(uint64)); // 8

	Println(sizeof(int64)); // 8

	WaitKey();
}


コピー禁止クラス
Uncopyable を private 継承すると、そのクラスのコピーを禁止できます。

# include <Siv3D.hpp>

class Something : Uncopyable
{

};

void Main()
{
	Something a;

	Something b = a; // erroe

	WaitKey();
}


最大値を取得する
Max(...) は与えられた引数の中で最大の値を返します。
3 つ以上の値を渡したい場合は Initializer-list を使います。

# include <Siv3D.hpp>

void Main()
{
	Println(Max(30, 50)); // 50

	Println(Max(6.5, -2.5)); // 6.5

	Println(Max<double>(4.6, 8)); // 8	

	Println(Max(String(L"Cat"), String(L"Dog"))); // Dog

	Println(Max({ 3, 10, 5, 9 })); // 10

	Println(Max({ -1.5, 0.9, 1.6 })); // 1.6

	Println(Max<double>({ 59.6, 40, L'a' })); // 97 (L'a')

	Println(Max<String>({ L"Cat", L"Dog", L"Bird" })); // Dog

	WaitKey();
}


最小値を取得する
Min(...) は与えられた引数の中で最小の値を返します。
3 つ以上の値を渡したい場合は Initializer-list を使います。

# include <Siv3D.hpp>

void Main()
{
	Println(Min(30, 50)); // 30

	Println(Min(6.5, -2.5)); // -2.5

	Println(Min<double>(4.6, 8)); // 4.6

	Println(Min(String(L"Cat"), String(L"Dog"))); // Cat

	Println(Min({ 3, 10, 5, 9 })); // 3

	Println(Min({ -1.5, 0.9, 1.6 })); // -1.5

	Println(Min<double>({ 59.6, 40, L'a' })); // 40

	Println(Min<String>({ L"Cat", L"Dog", L"Bird" })); // Bird

	WaitKey();
}


値を範囲内に収める
Clamp(x, min, max) は最小値と最大値の範囲にクランプした値を返します。

# include <Siv3D.hpp>

void Main()
{
	Println(Clamp(30, 0, 100)); // 30

	Println(Clamp(-30, 0, 100)); // 0

	Println(Clamp(130, 0, 100)); // 100

	Println(Clamp<double>(5.5, 4, 10)); // 5.5

	WaitKey();
}


条件を満たす要素をコンテナから削除する
Erase_if(c, pred) はコンテナから条件を満たす要素を削除します。

# include <Siv3D.hpp>

void Main()
{
	Array<int> v = { 1, 2, 3, 4, 5, 6 };

	Erase_if(v, [](int n){return n % 2 == 0; }); // 偶数の要素を削除

	Println(v); // {1,3,5}

	WaitKey();
}


コンテナのすべての要素が条件を満たすか調べる
AllOf(c, pred) はコンテナのすべての要素が条件を満たすかを返します。

# include <Siv3D.hpp>

const auto IsEven = [](int n){return n % 2 == 0; };
const auto IsOdd = [](int n){return n % 2 != 0; };

void Main()
{
	Array<int> v = { 1, 2, 3, 4, 5, 6 };

	Println(v);
	Println(AllOf(v, IsEven)); // false

	Erase_if(v, IsOdd);

	Println(v);
	Println(AllOf(v, IsEven)); // true

	WaitKey();
}


コンテナのいずれかの要素が条件を満たすか調べる
AnyOf(c, pred) はコンテナのいずれかの要素が条件を満たすかを返します。

# include <Siv3D.hpp>

void Main()
{
	const Array<String> v = { L"apple", L"bird", L"cat", L"dog" };

	Println(AnyOf(v, [](const String& s){ return s.length < 5; })); // true

	Println(AnyOf(v, [](const String& s){ return s.length > 5; })); // false

	WaitKey();
}


コンテナのすべての要素が条件を満たさないか調べる
NoneOf(c, pred) はコンテナのすべての要素が条件を満たさないかを返します。

# include <Siv3D.hpp>

void Main()
{
	const Array<int> v = { 10, 5, 9, 6 };

	Println(NoneOf(v, [](int n){ return n < 8; })); // false

	Println(NoneOf(v, [](int n){ return n > 20; })); // true

	WaitKey();
}