C++におけるvectorとlistの違い

vectorとlistはC++標準テンプレートライブラリ(STL)で提供されるコンテナであり、それぞれ異なる特性を持っています。ここではそれらの主な違いを説明します。 メモリ構造 list: 双方向リストとして実装されており、メモリ領域は非連続です。 長所: 挿入や削除が効率的です。データの移動は不要で、ポインタの変更のみで処理が可能です。 ...

7月4日 20:51 投稿

C++ STLアルゴリズムの使い方と実装例

1. 非変更シーケンス操作 これらのアルゴリズムはコンテナの要素を変更しない。 1.1 find系関数 find(first, last, value):値がvalueと等しい最初の要素を検索。 find_if(first, last, pred):述語predを満たす最初の要素を検索。 find_end(first, last, s_first, s_last):部分列の最後の出現位置を検索。 #include <vector> #include <algorithm> #inc ...

6月4日 19:07 投稿

C++でvectorコンテナを自作実装する方法

C++の標準ライブラリで提供されるstd::vectorの動作を理解するために、独自の動的配列クラスを実装します。この記事では、イテレータ、メモリ管理、要素アクセス、変更操作などの実装手順をコード例とともに解説します。 メンバ変数 std::vectorと同様に、内部では3つのポインタ(イテレータ)で管理します。std::stringとは異なり、サイズやキャパシティはこれらのポイン ...

5月30日 17:22 投稿

C++を用いた配列操作:最大値除外、平均算出、配列比較の実装手法

最大値と異なる数値の総和を求める 与えられた整数列の中から最大値を特定し、その最大値と一致しない要素のみを抽出して合計を算出するプログラムの実装です。 実装コード #include <iostream> #include <vector> #include <algorithm> int main() { int elementCount; if (!(std::cin >> elementCount)) return 0; std::vector&l ...

5月30日 15:39 投稿

Java コレクションフレームワーク - Listインタフェースの実装クラス

配列はサイズが固定されているため、拡張が必要な場合はコレクションフレームワークを使用するのが一般的である。 コレクションフレームワークの概要(java.utilパッケージ) java.utilコレクションは 크게2つのカテゴリに分類される: Collection:単一の要素(value)を格納 Map:キーと値のペア(key-value)を格納 Collectionはさらに細分化される: List:順序付け ...

5月29日 22:43 投稿

C++のvectorコンテナの内部構造と実用的な使い方

std::vectorはC++標準ライブラリで提供される動的配列で、メモリ上に要素を連続的に配置します。固定長配列と異なり、実行時にサイズを柔軟に変更できるのが特徴です。 1. vectorのメモリ管理 vectorは2つの重要な状態情報を管理します:容量(capacity)と現在の要素数(size)。 容量:確保済みのメモリ領域の大きさ サイズ:実際に格納されている要素数 要素追加 ...

5月24日 23:56 投稿

Java Listインタフェースの実装と動作原理

Listインタフェースの基本特性 java.util.ListインタフェースはCollectionを継承し、順序付きのシーケンスとして機能します。主な特徴は以下の通りです: 要素の順序を保持し、追加順序が保存されます インデックスを用いた要素のアクセスが可能です 重複した要素の保存が許可されます null値の要素を保存できます Listインタフェースの主要メソッド 以下のメソッドが定 ...

5月22日 17:44 投稿