【C++ STL】配列のdata()メソッドの使い方を例付きで解説
配列とは
配列とは、同じデータ型の要素を連続したメモリ領域に格納したコレクションのことです。
C++標準ライブラリには、配列の機能をサポートするライブラリが数多く含まれています。その中の一つが、arrayコンテナのdata()メソッドです。
C++のarray::data()は、オブジェクトの先頭要素を指すポインタを返します。これにより、配列の内部バッファへ直接アクセスしたり、連続したメモリを前提とするC言語スタイルのAPIに配列を渡したりすることができます。
構文
array_name.data();
パラメータ
この関数は、引数を受け取りません。
戻り値
配列の先頭要素を指すポインタを返します。戻り値の型は、配列の要素型へのポインタ(例えばfloat*)です。なお、空の配列に対してdata()を呼び出した場合に返されるポインタは逆参照しないよう注意してください。
使用例1:先頭要素へのポインタを取得する
array::data()メソッドの基本的な使い方を示すプログラム:
#include <bits/stdc++.h>
using namespace std;
int main(){
array<float, 4> percentage = { 45.2, 89.6, 99.1, 76.1 };
cout << "配列の要素: ";
for (auto it = percentage.begin(); it != percentage.end(); it++)
cout << *it << " ";
auto it = percentage.data();
cout << "\n先頭要素: " << *it;
return 0;
}出力
配列の要素: 45.2 89.6 99.1 76.1 先頭要素: 45.2
使用例2:ポインタ演算で各要素にアクセスする
data()で取得したポインタをインクリメントして、2番目・3番目の要素にアクセスするプログラム:
#include <bits/stdc++.h>
using namespace std;
int main(){
array<float, 4> percentage = { 45.2, 89.6, 99.1, 76.1 };
cout << "配列の要素: ";
for (auto it = percentage.begin(); it != percentage.end(); it++)
cout << *it << " ";
auto it = percentage.data();
it++;
cout << "\n2番目の要素: " << *it;
it++;
cout << "\n3番目の要素: " << *it;
return 0;
}出力
配列の要素: 45.2 89.6 99.1 76.1 2番目の要素: 89.6 3番目の要素: 99.1
まとめ
- array::data()は、配列の先頭要素を指すポインタを返します。
- 引数は不要で、戻り値は要素型へのポインタです。
- 返されたポインタに対してポインタ演算(it++など)を行うことで、任意の要素にアクセスできます。
- 連続したメモリを前提とするC言語の関数へ配列を渡す際などに便利です。
-
C++ STLのstd::arrayで使えるget()関数の使い方を徹底解説
この記事では、C++ STLのstd::arrayコンテナに用意されているget()関数について詳しく解説します。この関数は、配列コンテナ内のi番目の要素を取得するために使用される便利な非メンバ関数です。 構文 get<i> array_name get()関数は、2つの必須パラメータを受け取ります。 1つ目はインデックスパラメータで、配列のi番目の位置を指定します。ここにはテンプレート引数として整数の定数を渡します。 2つ目は配列名(array_name)で、実際に要素を取り出す対象となる配列そのものです。 この関数は、指定されたi番目の要素への参照を返します。 なお、get()
-
C++のSTLでstd::arrayを実装するサンプルプログラム
C++のSTL(標準テンプレートライブラリ)には、固定長の配列を安全かつ便利に扱えるコンテナstd::arrayが用意されています。本記事では、配列に対するさまざまな操作(サイズの取得・要素の挿入・先頭/末尾要素の参照・全要素の表示など)をメニュー形式で選択できるサンプルプログラムを、擬似コード・実際のコード・実行結果とあわせて解説します。 配列に対する操作と擬似コード まず、プログラム全体の流れを擬似コードで確認しましょう。 開始 main()関数内で TRUEの間、以下を繰り返す 選択肢を表示する 選択内容を入力として受け取る sw