はじめに
この実験では、C++ の map で find() メソッドをどのように使用するかを学びます。find() メソッドは、与えられたキーで map 内の要素を検索するために使用されます。この実験では、C++ と map コンテナの基本的な知識があることを前提としています。
新しい C++ ファイルを作成する
まず、~/project ディレクトリに main.cpp という名前の新しい C++ ファイルを作成する必要があります。このファイルを作成および編集するには、任意のテキストエディタまたは IDE を使用できます。
cd ~/project
touch main.cpp
必要なライブラリと名前空間をインクルードする
main.cpp ファイルの先頭で、必要なライブラリとユーザー定義指示子をインクルードします。
#include <iostream>
#include <map> //map ライブラリをインクルードする
using namespace std;
main 関数を定義する
コードを記述し始めるために、main() 関数を定義します。
int main() {
//あなたのコード
return 0; //プログラムを終了する
}
Map コンテナを作成する
整数型のキーと値を持つマップコンテナを作成します。このマップコンテナは、キーの昇順にソートされたキー-値のペアを格納します。
map<int, int> myMap; //整数型のキーと値を持つマップコンテナを作成する
要素を Map に挿入する
insert() メソッドを使用して、キー-値のペアをマップコンテナに挿入します。この手順では、マップに 5 つの要素を挿入します。
myMap.insert(make_pair(3, 9));
myMap.insert(make_pair(2, 4));
myMap.insert(make_pair(5, 25));
myMap.insert(make_pair(9, 81));
myMap.insert(make_pair(1, 1));
find() メソッドを使って要素を検索する
find(x) メソッドを使って、マップ内のキー x を持つ要素を検索します。要素が見つかった場合、このメソッドはその要素へのイテレータを返します。見つからなかった場合、このメソッドはマップコンテナの end() へのイテレータを返します。ここでは、キー 5 と 6 を持つ要素を検索します。
map<int, int>::iterator it; //マップコンテナ用のイテレータを作成する
it = myMap.find(5); //マップ内のキー 5 を持つ要素を検索する
if (it!= myMap.end()) {
cout << "キー 5 を持つ要素が見つかり、値は " << it->second << endl;
} else {
cout << "キー 5 を持つ要素は見つかりません\n";
}
it = myMap.find(6); //マップ内のキー 6 を持つ要素を検索する
if (it!= myMap.end()) {
cout << "キー 6 を持つ要素が見つかり、値は " << it->second << endl;
} else {
cout << "キー 6 を持つ要素は見つかりません\n";
}
プログラムをコンパイルして実行する
ターミナルで以下のコマンドを使用して main.cpp ファイルをコンパイルします。
g++ main.cpp -o main
以下のコマンドを使用してプログラムを実行します。
./main
プログラムをテストする
プログラムを実行した後、ターミナルに以下の出力が表示されるはずです。
キー 5 を持つ要素が見つかり、値は 25
キー 6 を持つ要素は見つかりません
この出力は、マップ内にキー 5 を持つ要素が見つかり、その値は 25 であることを示しています。マップ内にはキー 6 を持つ要素は見つかりません。
コードを完成させる
以下の完成したコードを main.cpp ファイルにコピーして貼り付けます。
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> myMap; //整数型のキーと値を持つマップコンテナを作成する
myMap.insert(make_pair(3, 9));
myMap.insert(make_pair(2, 4));
myMap.insert(make_pair(5, 25));
myMap.insert(make_pair(9, 81));
myMap.insert(make_pair(1, 1));
map<int, int>::iterator it; //マップコンテナ用のイテレータを作成する
it = myMap.find(5); //マップ内のキー 5 を持つ要素を検索する
if (it!= myMap.end()) {
cout << "キー 5 を持つ要素が見つかり、値は " << it->second << endl;
} else {
cout << "キー 5 を持つ要素は見つかりません\n";
}
it = myMap.find(6); //マップ内のキー 6 を持つ要素を検索する
if (it!= myMap.end()) {
cout << "キー 6 を持つ要素が見つかり、値は " << it->second << endl;
} else {
cout << "キー 6 を持つ要素は見つかりません\n";
}
return 0; //プログラムを終了する
}
まとめ
おめでとうございます!C++ のマップコンテナで find() メソッドを使用する方法をうまく学びました。find() メソッドは、マップコンテナ内で特定のキーを持つ要素を検索するのに役立ちます。見つかった場合、find() メソッドはその要素へのイテレータを返し、見つからなかった場合、マップコンテナの end() へのイテレータを返すことを忘れないでください。



