mori– Author –
-
【C++】vector等のコンテナのサイズを変更する.resize()の使い方
はじめに C++のstd::vectorやstd::listなどのコンテナを扱っていると、「要素数を後から増やしたい」「逆に、末尾の要素を削除してサイズを縮小したい」という場面があります。 このような、コンテナの**要素数(.size())**を直接変更するのが .resize() ... -
【C++】vector等のコンテナを空にする.clear()の使い方
はじめに C++でvectorやlist、mapなどのコンテナを再利用する際、「コンテナの中身を全て削除して、空の状態に戻したい」という場面は頻繁にあります。 forループで末尾の要素を一つずつ.pop_back()で削除していく方法もありますが、よりシンプルで効率的... -
【C++】コンテナが空かどうかを判定する.empty()の使い方 (sizeとの違い)
はじめに C++でvectorやstring、mapなどのコンテナを扱う際、「コンテナに要素が一つでも含まれているか、それとも空っぽか」を判定したい場面は非常に多くあります。 この判定には、.empty() というメンバ関数を使うのが、最もシンプルで推奨される方法で... -
【C++】コンテナの全要素に同じ処理を適用する std::for_each の使い方
はじめに C++で、「vectorに格納された全ての数値に10を足したい」「全ての文字列を画面に表示したい」といったように、コンテナの全要素に対して、同じ操作を一律に適用したい場面は非常に多くあります。 この記事では、この目的を達成するための2つの主... -
【C++】std::fill, fill_n でコンテナの要素を特定の値で埋める方法
はじめに C++でvectorなどのコンテナを特定の値、例えば 0 や -1 で初期化・リセットしたい場合があります。forループを使って一つずつ代入することもできますが、C++の標準ライブラリ <algorithm> には、このための専用関数が用意されています。 st... -
【C++】std::replace, replace_if でコンテナの要素を置換する方法
はじめに C++でvectorなどのコンテナを操作する際、「特定の値を持つ全ての要素を、別の値に置き換えたい」「特定の条件を満たす全ての要素を、別の値に置き換えたい」という場面は頻繁に発生します。 forループを書いて自力で実装することもできますが、C... -
【C++】std::reverse でコンテナの要素を逆順にする方法
はじめに C++でvectorなどのコンテナに格納された要素の並びを、完全に逆順にしたい(例: {1, 2, 3} → {3, 2, 1})場合があります。 この目的のために、標準ライブラリ <algorithm> には、std::reverse と std::reverse_copy という2つの便利な関数... -
【C++】std::shuffle でコンテナの要素をランダムにシャッフルする方法
はじめに C++で、カードゲームの山札を混ぜるように、vector などのコンテナの要素の並び順をランダムにしたい場合があります。 C++の標準ライブラリ <algorithm> には、このための std::shuffle という関数が用意されています。shuffle は、指定さ... -
【C++】std::sort / partial_sortでコンテナをソート(並べ替え)する方法
はじめに C++でvectorなどのコンテナに格納した要素を、昇順や降順に並べ替えたい(ソートしたい)場面は非常に多くあります。C++の標準ライブラリ <algorithm> には、このための非常に高速で効率的なソート関数が用意されています。 この記事では、... -
【C++】std::count, std::count_if でコンテナの要素数を数える方法
はじめに C++でvectorなどのコンテナを扱う際、「指定した値と完全に一致する要素の数」や、「特定の条件を満たす要素の数」を数えたい場面は非常に多くあります。 forループで自力で数えることもできますが、C++の標準ライブラリ <algorithm> には... -
【C++】コンテナの要素を検索する方法 (find, find_if, map::find)
はじめに C++でvectorやmapなどのコンテナを扱う際、「特定の条件に合う要素を探し出す」という操作は、最も基本的な処理の一つです。C++の標準ライブラリは、この検索処理のために、効率的で汎用的なツールを提供しています。 この記事では、コンテナの種... -
【C++】std::transform でコンテナの全要素を変換する方法
はじめに C++で、「vectorに格納された数値全てを2倍したい」「文字列のリストを全て大文字にしたい」といったように、コンテナの各要素に同じ変換処理を加え、その結果を新しいコンテナに格納したい場面は非常に多くあります。 forループを書いて一つずつ... -
【C++】vector等から要素を削除する様々な方法を徹底解説
はじめに C++のコンテナ(vector, list, mapなど)を操作する上で、「特定の要素を削除する」という処理は非常に頻繁に発生します。C++には、この削除処理を行うための様々な方法が用意されており、状況に応じて最適なものを選択することが重要です。 この... -
【C++】vector等から重複した要素を削除する std::unique の使い方
はじめに C++で、vector などのコンテナから、重複している要素を全て取り除き、ユニークな(一意な)要素だけの状態にしたい、という場面は頻繁にあります。 この目的のために、標準ライブラリ <algorithm> には std::unique という関数が用意され... -
Python文字列の整形:rjust(), ljust(), center()でテキストを揃える
この記事では、Pythonの文字列をコンソールやテキストファイルに出力する際に、見た目を整えるために役立つrjust()、ljust()、center()メソッドについて解説します。 rjust()メソッドとljust()メソッド rjust()とljust()は、指定した全体の幅の中で、文字... -
Python文字列のjoin()とsplit()メソッド:リストと文字列を自在に変換
この記事では、Pythonの文字列とリストを相互に変換するための基本的なメソッドである、**join()とsplit()**について解説します。 join()メソッド:リストを文字列に結合する join()メソッドは、文字列のリストの各要素を、指定した**区切り文字(separato... -
Python文字列のstartswith()とendswith()メソッドによる接頭辞・接尾辞の判定
この記事では、Pythonの文字列が特定の部分文字列で始まるか、または終わるかを判定する**startswith()とendswith()**メソッドについて解説します。 startswith()メソッド startswith()メソッドは、文字列が指定された**接頭辞(prefix)**で始まるかどう... -
Python文字列のupper(), lower(), isupper(), islower()メソッド
この記事では、Pythonの文字列における大文字と小文字を操作するための基本的なメソッド、upper()、lower()、isupper()、islower()について解説します。 大文字・小文字に変換する:upper()とlower() upper()とlower()メソッドは、文字列のアルファベット... -
Python文字列:inとnot in演算子による部分文字列の検索
この記事では、Pythonの文字列に特定の部分文字列が含まれているかどうかを判定するinおよびnot in演算子について解説します。 in演算子 in演算子は、ある文字列が別の文字列内に部分文字列として含まれているかを評価します。含まれている場合はTrueを、... -
Python文字列の基本:インデックスとスライスによる部分文字列の抽出
この記事では、Pythonの文字列から特定の部分を抽出するための基本的な手法である、インデックスとスライスについて解説します。 インデックスによる文字へのアクセス 文字列は、文字が順番に並んだシーケンスデータです。そのため、各文字にはインデック... -
Pythonの文字列操作:クォート、エスケープ文字、複数行文字列の基本
Pythonにおいて、文字列は最も基本的なデータ型の一つです。テキストデータを扱う上で、文字列をどのように定義し、特殊な文字をどう表現するかを理解することは非常に重要です。 この記事では、Pythonで文字列を定義するための様々な方法(クォートの使い... -
Python辞書でゲームの持ち物リストを管理しよう
Pythonの辞書は、キーと値のペアでデータを管理するのに非常に強力です。その実用的な応用例として、ファンタジーゲームのプレイヤーが持つアイテムとその数を管理する「持ち物リスト(インベントリ)」の作成があります。 この記事では、辞書を使ってゲー... -
【C++】all_of, any_of, none_of | コンテナの要素が条件を満たすか判定する方法
はじめに C++で、コンテナ(vectorなど)の全要素をチェックして、「全ての要素が正の数か?」「少なくとも一つ偶数が含まれているか?」「負の数は一つも含まれていないか?」といった条件を判定したい場面はよくあります。 forループとif文でこれらのロ... -
【C++】min_element, max_elementでコンテナの最小値・最大値を取得する方法
はじめに C++で、vector などのコンテナに格納された要素の中から、最小値や最大値を探し出したい、という場面は非常に多くあります。自前でループを書いて探すこともできますが、C++の標準ライブラリ <algorithm> には、このための専用関数が用意さ... -
【C++】std::accumulate でコンテナの合計値などを計算する方法
はじめに C++で、vector などのコンテナに格納された全要素の合計値を求めたい場合、forループを使って一つずつ足し合わせていくのが基本的な方法です。しかし、このような典型的な集計処理のために、標準ライブラリ <numeric> には、より簡潔で意図... -
【C++】std::set_union 等 | 2つのソート済みコンテナで集合演算を行う方法
はじめに 数学で学ぶ「集合」の考え方(和集合、積集合、差集合など)は、プログラミングにおいても、2つのデータセットを比較・合成する際に非常に役立ちます。 C++の標準ライブラリ <algorithm> は、これらの集合演算を効率的に行うための、以下の... -
【C++】std::next_permutation ですべての順列を生成する方法
はじめに プログラミングでは、{A, B, C} という要素の集まりから、{A, C, B}, {B, A, C}, {B, C, A} といった、考えられる全ての並び順(順列)をリストアップしたい場面があります。 C++の標準ライブラリ <algorithm> には、この順列生成を簡単に... -
【C++】vectorやstringのデータへ直接アクセスするポインタを取得する方法 (.data, .c_str)
はじめに C++のstd::vectorやstd::stringは、内部的に連続したメモリ領域(配列)を使ってデータを管理しています。通常、これらのコンテナの要素には .at() や [] 演算子でアクセスしますが、時には、C言語スタイルの古い関数(printf や memcpy など)と... -
【C++】vectorのメモリを事前確保するreserve()の使い方(パフォーマンス改善)
はじめに C++の std::vector は、要素を追加 (push_back) していくと、内部のメモリ領域(キャパシティ)が足りなくなった時点で、より大きな新しいメモリ領域を確保し、そこに全要素をコピーするという「メモリの再確保」を自動で行います。 この再確保は... -
【C++】vectorの余分なメモリを解放する shrink_to_fit() の使い方
はじめに C++の std::vector は、要素が追加される際に、効率化のために実際の要素数よりも少し多めにメモリを確保します。これにより、push_back のたびにメモリ確保が走るのを防ぎ、パフォーマンスを向上させています。 vectorが現在保持している要素の...