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 投稿

LeetCodeの連結リスト問題解法:ノード交換、削除、交差検出、循環検出

ノードのペア交換(問題24) 連結リストの隣接ノードを交換する実装例。ダミーノードを使用し、3つのポインタで前後関係を管理します。 class Solution { public: ListNode* swapNodePairs(ListNode* head) { ListNode dummy(0); dummy.next = head; ListNode* current = &dummy; while (current->next && current->next-> ...

7月10日 22:22 投稿

C++ accumulate関数における初期値型の影響と注意点

std::accumulateアルゴリズムは、指定範囲の要素を集約するためのSTL関数です。この関数の戻り値型は第三引数の初期値型に厳密に依存し、型の選択が計算結果に重大な影響を与えます。 #include <numeric> #include <vector> #include <iostream> int main() { std::vector<double> numList = {2.5, 1.7, 3.2, 4.1}; std::cout << s ...

7月10日 21:36 投稿

WinCEにおけるGetForegroundWindow使用時の疑問

プロジェクトのナビゲーション機能実装中に、特定の条件下でロードイング画面が表示されない現象が発生。この問題の原因として、Windows APIのGetForegroundWindow()関数呼び出しが関与していることが判明した。この関数はアクティブウィンドウのハンドルを取得する目的で使用されていたが、意図せずに画面表示に影響を与えていた。 { HWND activeWindow = GetFor ...

7月10日 19:00 投稿

Qtシグナルスロット機構における基底クラスと派生クラスの受け渡しパターン

Qtのシグナルスロット機構で基底クラス型のオブジェクトを非同期的に渡す際、派生クラスの特性やスレッド親和性によって予期しない動作が発生しやすい。本稿では、値渡し・参照渡し・ポインタ渡しそれぞれの動作特性と、実装上の課題を具体的なコード例を通じて整理する。 検証用クラス定義 以下にテスト用の基底クラスと派生クラスを定義する。デストラクタと仮想関数を ...

7月10日 16:42 投稿

C++ 設計パターン:ファクトリメソッドと単純ファクトリの比較実装

オブジェクト生成の結合度を下げる オブジェクト指向設計において、クライアントコードが具体的なクラスを直接インスタンス化すると、結合度が高まり、拡張が困難になります。ファクトリパターンは、このインスタンス生成のロジックをカプセル化し、システムの変更影響範囲を最小限に抑えるための手法です。ここでは、自動車の生成を例に、単純ファクトリとファクトリメソ ...

7月10日 03:03 投稿

C++ STL 文字列コンテナの操作と実装

主なインターフェース コンストラクタ 関数名機能 string()空の文字列オブジェクトを生成 string(const char* s)C文字列から文字列オブジェクトを生成 string(size_t n, char c)n個の文字cで構成される文字列を生成 string(const string& s)コピーコンストラクタ void test1() { string str1; // 空の文字列を生成 cout

7月10日 00:22 投稿

C++におけるstd::tieの活用方法

std::tieとは何か std::tieはC++の標準ライブラリで提供される関数テンプレートであり、複数の左値参照からなるタプルを作成します。この機能は、複数の戻り値を持つ関数の結果を個別の変数に展開する際に特に便利です。 std::unordered_map::insertの戻り値 std::unordered_mapのinsertメソッドはstd::pairを返します。このペアには2つの要素が含まれます: 最初の要素 ...

7月8日 23:21 投稿

C++のcstringライブラリ:文字列操作関数の詳細解説

C++におけるcstringライブラリの概要 C++プログラミングにおいて、#include <cstring>はCスタイルの文字列(ヌル文字'\0'で終わる文字配列)を操作するための関数群を提供するヘッダファイルをインクルードするディレクティブです。このライブラリには、文字列のコピー、比較、連結、検索など、基本的な文字列操作関数が含まれています。 文字列のコピー関数 strcp ...

7月8日 21:46 投稿