Qt/C++によるTCPネットワークデバッガの設計と実装

TCPネットワークデバッガの開発 本プロジェクトでは、UIの簡素化を図りつつ、TCP通信の核心技術に焦点を当てたネットワークデバッガを開発する。主な目的は、クライアント・サーバー間の接続確立、データ送受信の実装であり、同時にQtのGUIコンポーネントの再利用も行う。 サーバー側の実装フロー QtでTCPサーバーを構築するには、QTcpServer クラスを使用し、以下の手順 ...

5月16日 20:50 投稿

2025牛客暑期多校訓練キャンプ第1回 解説

G. Symmetry Intervals 文字列 $S$ と $q$ 個のクエリが与えられる。各クエリでは文字列 $T$、整数 $a$、および区間 $[l, r]$(ただし実装上は $T$ 全体を対象)が与えられ、$S_{a+x-1} = T_x$ がすべての $x \in [l, r]$ で成り立つような連続部分区間の個数を求める。 アプローチとしては、$T$ の各位置 $j$ に対して対応する $S$ のインデックス $ps = j + a - 1$ を計 ...

5月16日 19:59 投稿

C++におけるクラスとオブジェクトの完全解説

プロシージャルプログラミングとオブジェクト指向の違い C言語はプロシージャル(手続き型)プログラミングを採用しており、問題解決の流れを関数の呼び出しで表現します。一方、C++はオブジェクト指向プログラミング(OOP)に基づいており、現実世界の「物事」をモデル化したオブジェクトとして捉え、それらの相互作用によって処理を完遂します。 クラスの基本構文 C++で ...

5月16日 19:21 投稿

SMU Summer 2024 Contest Round 6 問題解説

Many Formulas 問題概要 ある整数が与えられます。この整数の任意の桁と桁の間に + 記号を0個以上挿入することで式を形成し、形成可能なすべての式の合計値を計算します。 解法 1 ≤ |S| ≤ 10 であるため、全探索が現実的です。n桁の整数では、n-1箇所の隙間に加号を挿入するかどうかを決定できます。バイナリビットマスク用于枚举所有可能的加号插入位置。 実装 #include & ...

5月16日 16:51 投稿

PAT甲级 1045快速排序

#include <bits/stdc++.h> using namespace std; int main() { int N; cin>>N; int a[N],b[N]={0}; for(int i=0;i<N;i++){ cin>>a[i]; } int isprime=1,count=0; for(int i=0;i<N;i++){ int isprime=1; for(int j=0;j<i;j++){ if(a[j]>a[i]){ isprime=0; ...

5月16日 16:23 投稿

競技プログラミング向けアルゴリズム備忘録

メモリ使用量の見積もり プログラムが使用するメモリ容量を概算する方法: 1 MB = 1024 × 1024 バイト int 型は 4 バイト → 必要メモリ (MB) = (int の要素数 × 4) / (1024 × 1024) 他のデータ型も同様に、各要素のバイト数を掛け合わせて計算する。 実行時間の計測(C++) CPU時間を用いてコードの実行時間を計測する例: #include <ctime> #include <iostream ...

5月16日 05:33 投稿

C++における文字列の特性と効率的な取り扱い方

文字列の基本構造と種類 C++では、テキストデータを扱うために主に二種類の文字列表現が用いられる: 文字配列(Cスタイル):char型の配列で表され、終端にヌル文字\0を持つ。宣言例:char message[] = "Hello";。 std::stringクラス:標準ライブラリが提供する高機能な文字列型。動的メモリ管理を内包し、多くの操作が簡潔に記述可能。例:std::string greeting = "Hell ...

5月16日 05:21 投稿

C++での日付クラスの実装(メモ)

これまでにC++のクラスとオブジェクトの基本を学び、日付クラスの一部を例として使用しました。この記事では、小さな日付クラスを実装します。 まず、VSで3つのファイルを作成します: Test.cpp:日付クラスのテスト用ファイル 日常生活では、日付に対して整数日を加算または減算できます。例えば、2004年2月1日に3日を加えると、2004年2月4日になります。同様に減算も可能 ...

5月16日 03:19 投稿

C++プログラミングの重要な注意点とベストプラクティス

1. イテレータとペアの値へのアクセス方法の違い イテレータを介して値にアクセスする場合と、ループ内で直接ペアオブジェクトにアクセスする場合で、ドット演算子とアロー演算子の使い分けが必要です。 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { std::unordered_map hash_map; for(int i = 0; i < ...

5月16日 00:32 投稿

C++によるPrintWindowを用いたウィンドウキャプチャの実装

本実装では、C++とWindows APIを使用して特定のウィンドウのスクリーンショットを取得します。CreateDIBSection関数により、アプリケーションが直接書き込めるデバイス非依存ビットマップ(DIB)を作成し、メモリ内のビットマップデータへのポインタを提供します。 PrintWindow関数はD3Dでレンダリングされるウィンドウ(ExcelやWindows 10のビデオプレイヤーなど)のキャプ ...

5月15日 23:21 投稿