yohhoyの日記

技術的メモをしていきたい日記

2013-03-01から1ヶ月間の記事一覧

dataメンバ関数と戻り値ポインタ型のconst性

C++

C++標準ライブラリ提供のシーケンスコンテナ/文字列クラスdataメンバ関数 についてメモ。まとめ: std::basic_string<E>::dataメンバ関数は、常に文字列先頭を指すconst E *を返す。この仕様はC++98/03からC++11まで不変。*1 2016-03-27追記:C++17(C++1z)から</e>…

OpenMPのC++言語統合提案

C++1y(C++14)に向けた並列プログラミングモデルについてメモ。(PDF)N3530 Leveraging OpenMP infrastructure for language level parallelisationにて、OpenMP実装インフラをC++言語機能として統合する提案がなされている。初期提案のため骨子のみ。OpenMPは…

Logical XOR operator Revival

C++ Evolution Working Group(EWG)に「論理XOR演算子^^」なるものが提案(?)されているが… 2023-07-23追記:同提案は2013年会合にて却下(NAD)*1されている。C++ Standard Evolution Active Issues List, #37. Logical xor operatorより一部引用。 (snip) T…

atomic型と整数型のサイズ

C C++

プログラミング言語C/C++が標準で提供するatomic型は、必ずしも対応する整数型と同一サイズとは限らない。(とはいえlock-freeなatomic型であれば、ネイティブ命令でatomic操作が内部実装されるハズなので、整数型と同一サイズ/内部表現になると考えられる…

is_scoped_enumメタ関数

C++11以降で導入されたscoped enumeration*1か否かを判別するメタ関数。本記事の内容はStack Overflowで見つけた質問と回答に基づく。2020-11-14追記:C++2b(C++23)標準ライブラリに向けて提案文書(PDF)P1048R1が採択され、<type_traits>ヘッダにstd::is_scoped_enumメタ</type_traits>…

電子書籍"Threading in C#"

C#

C#/CLRによるマルチスレッドプログラミングの基礎〜Parallel LINQ(PLINQ)に関する電子書籍。HTML形式およびPDF形式(125頁)で無償公開されている。 http://www.albahari.com/threading/, Joseph Albahari

latch, barrier同期プリミティブ

C++1y(C++14)に向けて提案されている同期プリミティブについてメモ。N3600 C++ Latches and Barriers に基づく。2019-09-11追記:C++2a(C++20)に向けて P1135R6 が採択され、C++標準ライブラリにstd::latchとstd::barrierが追加される。https://github.com/y…

C/C++ char型の符号有無

プログラミング言語C/C++のchar型が、符号あり/符号なしのいずれかは処理系定義(implementation defined)*1。各コンパイラでの実装についてメモ。まとめ: char型を「符号あり(signed)」と仮定しないこと。(とはいえ、この仮定をおくコードは多い…) 特にA…

ファイルの同一性判定

POSIX環境またはWindows環境にて、2つのパス文字列が同一ファイルを指すか否かを判定する方法。(ファイルが存在していることが前提) POSIX デバイスIDとinode番号*1を用いて同一性判定を行う。 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int is_identical_file(const</unistd.h></sys/stat.h></sys/types.h>…

Duff's device

C

プログラミング言語Cにおいて、たまに「メモリ転送処理の最適化実装」もしくは「swtich文の難解な使い方」として紹介されるアルゴリズムの名前。ループ展開(loop unwinding, loop unrolling)最適化の一種。オリジナルコードでは転送先to=メモリマップドレジ…

std::random_shuffle関数はスレッド安全?

C++

C++標準ライブラリが提供するstd::random_shuffle関数テンプレートのスレッド安全性についてメモ。2014-12-04追記:std::random_shuffle関数テンプレートはC++1z(C++17)にて削除(remove)される。http://isocpp.org/blog/2014/11/updates-to-my-trip-report参…

rand関数とstd::random_shuffle関数テンプレートの関係

C++ C

2014-12-04追記:std::random_shuffle関数テンプレートはC++1z(C++17)にて削除(remove)される。http://isocpp.org/blog/2014/11/updates-to-my-trip-report参照。C++標準ライブラリが提供するstd::random_shuffle関数テンプレート*1では、その内部実装にてC…

\uuuu...の怪

プログラミング言語Javaにおけるソースコード上のUnicodeエスケープでは、バックスラッシュ(\)に続くuをいくつでも記述してよい。 String s0 = "\u65e5\u672c\u8a9e"; // "日本語" String s1 = "\uu65e5\uuu672c\uuuu8a9e"; // s0.equals(s1) == true The Ja…