HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

2018-01-01から1年間の記事一覧

C++版の文字列split実装の罠

C++

「C++ 文字列 カンマ区切り」とかで検索するとヒットする記事等には、以下のようなコードがよく書かれている。(main関数は動作確認のために自分で付け足したもの) #include <iostream> #include <string> #include <vector> #include <sstream> using namespace std; vector<string> split(string str, c</string></sstream></vector></string></iostream>…

sortの比較関数の実装ではまった

C++

最初、以下のような実装をしていた。 #include <algorithm> #include <iostream> using namespace std; class ValList { public: vector<int> valList; ValList(vector<int> &valList) { this->valList = valList; } }; class Comp { public: bool operator()(const ValList *v1, const ValL</int></int></iostream></algorithm>…

Nを表すのに必要な最低限のビット数

Javaのあるプログラムで非負整数Nに対する以下のような式を見かけた。 int n = (int)(Math.log10(N) / Math.log10(2) + 1.0); 最初、何を求めているのかしばらく分からなかったのでメモ。 ちなみに以下のように書いても同じ(はず)である。 int n = (int)Math…

Range同士の関係を判定する述語についてまとめてみる

非常につまらないミスをやらかして凹んでいるので、反省の意味を込めて、Rangeに対して実装できる述語を整理してみるテスト。 ちなみに、Rangeとは開始と終了(begin & end、from & to、left & right、etc.)の範囲を表現することができる何か。 Javaでクラ…

CentOS 7環境にMonoを導入してみる

ふと思い立って、C#のプログラムをCentOS 7上で動かせないかと考え、導入からコンパイル、実行までをやってみたメモ。 参考サイト CentOS7 Monoをインストールしてコンソールアプリを動かしてみる - 1.21 jigowatts LinuxでMonoを使ってC#をコンパイル・実行…

大量の座標値を読む場合の効率的な読み方

ふと、AtCoderなどのコンテストでよくある「大量の座標値を読んで何かを求める」という場合に、どういう処理を書いたら一番効率がいいのかと疑問に思ったので試してみたメモ。 テストケース データ生成 実行スクリプト 実行結果 テストケース 実際に試したケ…

mapのoperator[]の罠

C++

mapを使ったあるプログラムを書いていて、やたらとメモリを食うので、何だろうといろいろ試行錯誤しながら調べてみたら、どうもmapの使い方に問題があるのではないかということが分かってきた。 mapのリファレンスを探して読んでみると、以下のようなことが…

json_encode関数のJSON_UNESCAPED_UNICODEオプションの指定方法

json_encode関数はデフォルトではUnicode文字列がエスケープされるのだが、PHP 5.4より以前ではエスケープを避ける手段がないので、以下のようなコードを書くと、出力を人がパッと見ても読めない。 index.php

Javaでの和暦対応の罠

ふと、Javaで和暦対応してたよなぁと思い出し、検索して見つけた以下のサイトのプログラムを元に、とあることを検証してみた。 Javaで和暦→西暦、西暦→和暦に変換する - Qiita それは、「Calendar#setで西暦年をセットして和暦でフォーマットして出力したら…

サーバー名の末尾にドットを付けたリクエストを送ると予期せぬ応答が返ってくる問題

前置き 事前準備 サーバープログラム 接続テスト(サーバー:OpenJDK 1.7.0) 接続テスト(サーバー:OpenJDK 1.8.0) 検証 参考 前置き 以下の2つの環境での挙動が違うことに悩んでいた。 CentOS 6.9+OpenJDK 1.8.0+Apache Tomcat 6.0 CentOS 5.11+OpenJ…