Windows Runtime Cpp 文字列操作 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(応用:文字列配列のソート std::sortとstd::foreachの利用)
(応用:文字列配列のソート std::sortとstd::foreachの利用)
 
1,224行: 1,224行:
  
 
   
 
   
== '''応用:文字列配列のソート std::sortとstd::foreachの利用''' ==
+
== '''応用:文字列配列のソート std::sortとstd::for_eachの利用''' ==
STL(Standard Template Liblary)で準備されているソート関数を利用する例を示します。文字列配列を扱うためのvectorテンプレートとクイックソート処理を行うstd::sortと配列を一覧するstd::foreachを使えば、WindowsCompareStringOrdinal関数の文字列比較を利用して文字列配列のソート処理ができます。
+
STL(Standard Template Liblary)で準備されているソート関数を利用する例を示します。文字列配列を扱うためのstd::vectorテンプレートとクイックソート処理を行うstd::sortと配列を一覧するstd::for_eachを使えば、WindowsCompareStringOrdinal関数の文字列比較を利用して文字列配列のソート処理ができます。sort関数の第3引数は[]()->{}というカタチをとるラムダ式による処理が与えられています。ラムダ式についての詳細は[[Cpp ラムダ式]]を参照して下さい。サンプルのラムダ式はsort部では()引数部に2つのHSTRING型のaという変数とbという変数が引数になっています。->boolという部分でラムダ式の処理結果として返す値の変数の型を指定しています。{}内がラムダ式の処理値です。[]は内の値はキャプチャと呼ばれる外部を参照する変数を指定するものです。sort処理のクイックソートにおける前方値と後方値という位置づけの再帰的な引数が処理部に渡される仕組みで、処理部では、前方値と後方値の大きさを比較して、bool型の値を返却することになっています。比較の結果、大きい値が前方にあってtrue返すような関数なら降順に整列されます。大きい値が前方にある場合、WindowsCompareStringOrdinalの結果はtrueなので、そのまま、この結果を返すか、サンプルのようにr>0と結果値rがtrueならtrueになるような比較の結果を返却する式をreturn文で指定しています。
 +
 
 +
 
 +
2つめのfor_each関数のラムダ式は返却値無しで引数となるすべての配列値をひとつづつ処理するような内容のラムダ式としての処理部があれば良いので、サンプルのような処理になっています。HSTRING型の文字操作は先の項目にあげたような処理のみに限られ、変数が保持している文字列の内容そのものを変えることはできません。ですが、サンプルのようなvectorテンプレートの配列で順番を入れ替えるのはHSTRING型の文字列値をかえることなく配列の順番を意味する配列番号がもつHSTRING変数のアドレス変数を保持しなおすような整列であって中身を入れ替えるわけではないので、整列が可能なのです。お間違いなきよういただければと思います。
  
 
<syntaxhighlight lang="cpp" line start="1">
 
<syntaxhighlight lang="cpp" line start="1">

2017年5月29日 (月) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス