C++ STLのmatch_results::empty()関数の使い方と実例解説
この記事では、C++ STLにおける match_results::empty() 関数の動作、構文、および具体的な使用例について詳しく解説します。
C++ STLのmatch_resultsとは?
std::match_results は、正規表現によるマッチングの結果として得られた文字シーケンスの集合を格納するための、コンテナのような特殊なクラステンプレートです。このコンテナクラスでは、正規表現マッチ操作によって、対象シーケンス内のマッチ結果が保持されます。
match_results::empty()とは?
match_results::empty() 関数は、C++ STLに組み込まれている関数で、<regex> ヘッダーファイル内で定義されています。この関数は、関連付けられた smatch オブジェクトが空であるか、あるいはマッチ結果の値を保持しているかどうかを判定します。マッチオブジェクトが空、つまりマッチ結果が存在しない場合には true を返し、何らかの値が格納されている場合には false を返します。
構文
smatch_name.empty();
パラメータ
この関数は引数(パラメータ)を受け取りません。
戻り値
マッチオブジェクトが空である場合、またはコンテナ内にマッチ結果が存在しない場合には、ブール値 true を返します。逆に、マッチオブジェクトに何らかの値が格納されている、つまりマッチ結果が存在する場合には false を返します。
使用例
入力: std::smatch; smatch.empty(); 出力: true
サンプルコード
#include<bits/stdc++.h>
using namespace std;
int main() {
string str("Tutorials");
regex R_1("Points.*");
regex R_2("Tutorials.*");
smatch Mat_1, Mat_2;
regex_match(str, Mat_1, R_1);
regex_match(str, Mat_2, R_2);
if (Mat_1.empty()) {
cout<<"String doesn't matches with Regex-1" << endl;
} else {
cout << "String matches with Regex-1" << endl;
}
if (Mat_2.empty()) {
cout << "String doesn't matches with Regex-2" << endl;
} else {
cout << "String matches with Regex-1" << endl;
}
return 0;
}
実行結果
上記のコードを実行すると、以下のような出力が得られます。
String doesn't matches with Regex-1 String matches with Regex-1
この例では、文字列「Tutorials」に対して2つの異なる正規表現パターンでマッチングを行っています。最初のパターン「Points.*」は文字列と一致しないため、Mat_1 は空となり empty() が true を返します。一方、2つ目のパターン「Tutorials.*」は文字列と一致するため、Mat_2 にはマッチ結果が格納され、empty() は false を返します。このように、empty() 関数を使うことで、正規表現マッチが成功したかどうかを簡単に確認できます。
-
C++ STL入門:setとunordered_setの違いを徹底解説
本記事では、C++ STLにおける set と unordered_set の概要をわかりやすく解説し、両者の違いについても詳しく学んでいきます。 setとは? set(セット)は、Key型の一意なオブジェクトをソート済みの状態で格納する連想コンテナです。各要素は一度しか出現できず、重複した値は許されません。ユーザーは任意の順序で要素を挿入してsetを作成できますが、setは常にソートされた形でデータを返します。つまり、setにはデータを並べ替えるための仕組みが内部に組み込まれており、その処理はユーザーから抽象化されています。 setを使うべき主なケースは以下の通りです。 ソート済みのデ
-
C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード
C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス