Author: h.mohri
連想配列は[キーか]ら連想される内容(Value)をプログラムで登録しておき、必要なときに[キー]から検索した内容(Value)を取得できるデータコンテナです。ECMAScript(JavaScript)では変数にJSONを入力すると連想配列として扱うことができます。
JavaScript言語
1 2 3 4 5 |
var l_associative = { 'りんご': 'ゴリラ' }; console.log(l_associative.りんご); > ゴリラ |
PHP言語
1 2 3 4 5 6 7 |
<?php $l_associative = array('りんご'=>'ゴリラ'); print_r("ANSER = ".$l_associative['りんご']."n"); ?> |
このように、連想配列はさまざまなプログラム言語で利用されています。C++での連想配列は標準ライブラリのmapが使用できます。一般的に連想コンテナといわれています。では、C++Builder VCLアプリケーションのプロジェクトで標準ライブラリのmapを使って試してみましょう。
メインフォーム上にKeyを入力するTEditとボタンのOnClickイベントで結果表示するValue側のTEditを用意しました。
Button1を選択しオブジェクトインスペクタのイベントタブからOnClick項目をダブルクリックしイベントハンドラを作成します。
イベントハンドラのメソッドの上にmapを利用するためのインクルードを1行記述します。
1 |
#include <map> |
イベントハンドラの中は下記のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void __fastcall TForm1::Button1Click(TObject *Sender) { std::map<String, String> l_associative; l_associative.insert(std::make_pair<String, String>("りんご", "ゴリラ")); l_associative["赤"] = "きつね"; //結果をValue側に設定する Edit2->Text = l_associative[Edit1->Text]; } |
コード中のl_associativeと言う変数が連想コンテナです。insert()関数を使った登録と直接Keyを指定した入力方法2つ書いています。l_associativeの中を呼び出す場合l_associative[キー]です。
実行すると下記のように、Edit1で「赤」を入力しボタンをクリックすると「きつね」とEdit2に表示されました。
2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに! 日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。 |
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition