std::size_t
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <cstddef> で定義
|
||
| ヘッダ <cstdio> で定義
|
||
| ヘッダ <cstdlib> で定義
|
||
| ヘッダ <cstring> で定義
|
||
| ヘッダ <ctime> で定義
|
||
| ヘッダ <cwchar> で定義
|
||
typedef /*implementation-defined*/ size_t; |
||
std::size_t は sizeof 演算子、 sizeof... 演算子および alignof 演算子 (C++11以上)の結果の符号なし整数型です。
ノート
std::size_t はあらゆる型 (配列を含む) の理論上可能なオブジェクトの最大サイズを格納できます。 サイズが std::size_t で表せない型は ill-formed です。 (C++14以上) 多くのプラットフォームでは (例外はセグメント化されたアドレスを持つシステムです)、 std::size_t は任意の非メンバのポインタの値を安全に格納できます。 その場合 std::size_t は std::uintptr_t の同義語です。
std::size_t は一般的に配列のインデックスやループカウンタのために使用されます。 配列のインデックスに unsigned int などの他の型を使用するプログラムは、例えば64ビットのシステムにおいて、インデックスが UINT_MAX を超えるとき、または32ビットの剰余算術をあてにしている場合、失敗するかもしれません。
std::string や std::vector などの C++ のコンテナをインデックスするとき、適切な型はそれらのコンテナが提供するメンバ型 size_type です。 これは通常 std::size_t の同義語として定義されます。
例
Run this code
#include <cstddef>
#include <iostream>
#include <array>
int main()
{
std::array<std::size_t,10> a;
for (std::size_t i = 0; i != a.size(); ++i)
a[i] = i;
for (std::size_t i = a.size()-1; i < a.size(); --i)
std::cout << a[i] << " ";
}
出力:
9 8 7 6 5 4 3 2 1 0
関連項目
| 2つのポインタを減算したとき返される符号付き整数型 (typedef) | |
| 標準レイアウト型の先頭から指定されたメンバまでのバイトオフセット (関数マクロ) | |
size_t の C言語リファレンス
| |