C++におけるstringクラスの一部APIとその使用方法の紹介

目次 STLのstringクラス概要 主なAPIの解説  2.1 メンバ関数   2.1.1 コンストラクタ   2.1.2 代入演算子のオーバーロード   2.1.3 容量操作   2.1.4 要素アクセス   2.1.5 修飾操作   2.1.6 文字列操作   2.1.7 イテレータ  2.2 定数メンバ  2.3 非メンバ関数のオーバーロード  2.4 文字列から他の型への変換  2.5 他の型から文字列への変換 str ...

7月13日 16:48 投稿

多重継承の問題と適切な使用方法

多重継承の問題:複数の仮想関数テーブルの生成 C++における多重継承にはいくつかの問題点があります。ここでは、多重継承によって複数の仮想関数テーブルが生成される問題について解説します。 #include <iostream> using namespace std; class BaseA { public: virtual void display() { cout << "BaseA::display()" << endl; ...

7月13日 00:31 投稿

模擬退火アルゴリズムの原理と実装事例

模擬退火法の概要 模擬退火(Simulated Annealing, SA)は、大域的最適解近似アルゴリズムの一種であり、組み合わせ最適化問題などに広く適用される確率的探索手法です。解空間が非常に広大であり、かつ目的関数が単峰性を持たない場合などに有効です。 この手法は、金属加工における「焼きなまし(Annealing)」プロセスに由来します。金属を高温で加熱し、徐々に冷却する ...

7月12日 23:28 投稿

AWS IoTデバイスSDK C++ V2導入ガイド:よくあるトラブルと対処法

1. プロジェクト概要と使用言語 AWS IoT Device SDK for C++ V2は、デベロッパーがC++を用いてAWS IoT Coreとセキュアに通信するデバイスアプリケーションを構築できるように設計されたオープンソースライブラリです。このSDKはAWS Common Runtimeを基盤としており、多様なオペレーティングシステムやアーキテクチャに対応しています。MQTTプロトコルをサポートし、Device ...

7月12日 22:38 投稿

C++の型エイリアス:`typedef`の詳細と実践

`typedef`キーワードの基本概念 `typedef`キーワードは、C++プログラミングにおいて、既存のデータ型に対して新しい名前(エイリアス)を定義するために使用されます。この機能の主な目的は、コードの可読性を向上させ、複雑な型宣言を簡素化し、将来的な型の変更を容易にすることにあります。 構文と基本例 `typedef`の構文は非常にシンプルです。 typedef 既存の型 新し ...

7月12日 18:19 投稿

C++におけるファイル操作の基本と実装

プログラム実行中に生成されるデータは一時的なものであり、終了時に解放されます。これを永続化するにはファイルへの保存が必要です。C++では<fstream>ヘッダを用いてファイル操作を行います。 ファイルは以下の2種類に分類されます: テキストファイル:ASCIIコード形式で保存され、人間が読める形式 バイナリファイル:バイト列として保存され、通常は人間 ...

7月11日 23:37 投稿

LeetCodeにおける動的計画法:最長増加部分列と最長重複部分配列の解説

最長増加部分列 (LeetCode 300) 整数配列が与えられた場合、その中に含まれる最長の狭義増加部分列(Strictly Increasing Subsequence)の長さを見つけます。部分列とは、配列から要素をいくつか(0個でもよい)削除し、残りの要素の順序を変更しないで得られる配列のことを指します。 この問題は動的計画法(DP)を用いて解くのが一般的です。2層のループ構造が必要と ...

7月11日 22:38 投稿

Makefile を使った問題作成の方法

Makefile の概要 Makefile とは何か Makefile は、GNU make ツールの動作を制御するファイルです。GNU make はプロジェクトのビルドロジックを管理するツールで、複雑な依存関係を持つプロジェクトの効率的なビルドを可能にします。 Makefile の基本構文 以下のような単純なプロジェクトを使用して、Makefile の基本構文を説明します。 example-project/ ├── build/ ├── sr ...

7月11日 20:39 投稿

AndroidにおけるJavaからC++呼び出しの2つの手法 - 静的登録と動的登録

1. 静的登録 静的登録は、JavaのメソッドとC++の関数名をJNIの命名規則に従って厳密に一致させる仕組みです。この方法は実装がシンプルですが、関数名に特定のルールが適用されます。 Activity内でnativeメソッドを宣言 C++側で対応する関数を実装 サンプルコード: Java側(MainActivity): public native String stringFromJNI(); C++側(native-lib.cpp): exter ...

7月11日 17:20 投稿

红包分配システムの実装とソート処理

問題概要 N人の参加者間での紅包(お年玉)の分配記録を処理し、各人の収支を計算するプログラムを作成します。入力データから各人の収入金額、支出金額、獲得紅包数を算出し、指定された条件でソートして出力します。 入力形式 最初の行には参加者数N(≤104)が与えられます。続くN行には、各参加者が発行した紅包の情報が以下の形式で記述されます: K N1 P1 N2 P2 ... ...

7月11日 16:44 投稿