C++ 初級基礎:標準ライブラリ活用法

C++ の基本的な標準ライブラリ機能について、実践的な観点から整理します。 1. 入出力と基本設定 #include <bits/stdc++.h> using namespace std; // 入出力同期の非同期化(入出力PEED向上) ios::sync_with_stdio(false); cin.tie(nullptr); C++ のストリーム(cin/cout)と C 言語の関数(scanf/printf)は混在を避けることが推奨されます。混在すると入出力 ...

6月3日 17:42 投稿

STLコンテナのパフォーマンス比較: emplace_backとpush_back

C++標準ライブラリ(STL)では、コンテナに要素を追加する操作は非常に一般的です。MSVCのSTL実装では、この追加操作にはpush_backとC++11で導入されたemplace_backという2つの主な方法があります。これらのメソッドは似ていますが、内部の動作が大きく異なり、パフォーマンスに大きな影響を与えます。 なぜemplace_backは速いのですか? push_backとemplace_backの主な違いは ...

6月1日 17:57 投稿

C++におけるスマートポインタの活用と実装

スマートポインタの概要 スマートポインタの重要性 スマートポインタは、現代のC++アプリケーション開発において不可欠なメモリ管理メカニズムです。従来の生ポインタでは、開発者が明示的にメモリ確保と解放を管理しなければならず、メモリリークやダングリングポインタ、ダブルフリーなどの問題が発生しやすかったのです。スマートポインタを活用することで、オブジェ ...

5月31日 19:40 投稿

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

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

5月30日 17:22 投稿

C++のアルゴリズムとその応用

C++の標準ライブラリは、効率的なデータ操作を支援する多くのアルゴリズムを提供しています。これらのアルゴリズムは、コンテナ内の要素を検索、変更、並べ替え、統計情報の取得など、さまざまな目的で使用されます。 1. 非変更アルゴリズム これらのアルゴリズムは、コンテナ内の要素を変更せずに操作します。 1.1 find と find_if find(first, last, value): 指定した値 ...

5月27日 14:05 投稿

プログラミングコンテスト問題集(7問)

L1-1 人と神 指定された文字列を直接出力するPHP実装 <?php echo "To iterate is human, to recurse divine."; ?> L1-2 C言語速習 基本数値計算処理の実装例 #include <iostream> using namespace std; void calculate() { int total, studied, hours; cin >> total >> studied >> hours; cout input; int century = input / 100; ...

5月25日 23:04 投稿

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

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

5月24日 23:56 投稿

C++開発職向け2024年新卒筆記試験問題と解説

一、単一選択問題 1-1 配列 int a[2][3]; が宣言されているとき、a の要素への正しいアクセス方法は? A. a[0][1+1] B. a[1][3] C. a[1,3] D. a(1)(1) 1-2 関数オーバーロードに関する正しい記述は? A. オーバーロード関数の名前は異なってもよい B. 引数の個数が必ず異なる必要がある C. 戻り値の型が異なっていなければならない D. 引数リストが異 ...

5月20日 11:12 投稿

C++を用いたコンテスト参加者情報管理システムの実装

contestant.hpp #pragma once #include <iomanip> #include <iostream> #include <string> struct Participant { long studentId; std::string fullName; std::string department; int problemCount; int totalTime; }; std::ostream& operator<<(std::ostream& out, const Participant& p) { out << s ...

5月19日 19:33 投稿

C++のunique関数による重複削除処理

C++のSTLに含まれるunique関数は、隣接する重複要素を除去するための便利な機能です。この関数は<algorithm>ヘッダファイルに定義されており、配列やコンテナ内の連続した重複データを効率的に処理できます。 unique関数の動作原理 unique関数はソート済みのデータに対して最も効果を発揮します。この関数は重複要素を物理的に削除するのではなく、重複する要素を ...

5月18日 18:21 投稿