C++ で STL マップの find メソッドを使用する

C++Beginner
オンラインで実践に進む

はじめに

この実験では、C++ の mapfind() メソッドをどのように使用するかを学びます。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() へのイテレータを返すことを忘れないでください。