友人と話していたときに調べていたことのメモです。あとでまとめようとしていたらブラウザのタブバー(サイドバーにリスト表示させている)がひどいことになったのでまとめています。
目次
1.bit全探索
2週間でレーティングをごっそり落としてしまい、なぜBやCでつまずくようになってしまったのだろうと考えた結果、全探索が実装できていないことに気が付きました。そのためC問題でよく扱われるbit全探索について調べていました。
色々ありますが、bitsetを使うのが一番わかりやすい気がします。現在どこのbitが立っているのか出力しやすいですし、操作もわかりやすいと思います。
ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜
たのしい探索アルゴリズムの世界【前編:全探索、bit全探索から半分全列挙まで】
またビット演算を用いて色々できたなあと言うのを忘れていました。(奇偶判定とか)
2.即時関数
C++20から追加される関数です。常に定数式を評価されるように指定できます。
3.C言語(java)
単純にC言語のコードをjavaカテゴリーで質問しているのが面白いなと思っただけですが、C言語の文字列の扱いは基本情報技術者試験で出てきたのでなるほどなあってなったものです。
C++はstringがあるからいいけど、Cはポインタでやるから頭が混乱する。
4.基本入出力
何気なくC++で使っている<<や>>ですが、名前は何なんだろうと思って調べたものです。入出力演算子というらしいです。シフト演算子でも使われていますが、オーバーロードしてくれて適切な抽出演算子が選択されています。すげー。
5.JavaScriptの等価演算子と厳密透過演算子
==と===の違いです。私はjsを書いたことがなかったので、なにこれ?ってなりました。等価演算子では型の変換を試みて比較するらしいです。
6.型システムとB言語
型ってなんだろう?と思って調べたときのもの。ついでにC言語の前身であるB言語に型がないということを発見して興奮していました。
型なしの言語としては、B言語やアセンブリ言語があるらしいです。確かにアセンブリ言語を書いたとき型を書いた覚えがなかった。
そういえば度々宗教戦争を起こす++や–はB言語から導入されたらしい。
wikipediaのB言語のサンプルコードを読んでみると、autoが出てくるのが面白い。
7.静的サイトジェネレーター
WebサイトのHTMLファイルを生成するツールのことらしい。便利な物があるんだなあ。そう思っていたら、TLで見たことある名前が多かった。これがそうだったのか、という感想。
8.添字演算子
友人が「配列を別の表記でできたんだよお」って言ってたので調べたもの。やはりポインタ。
添字演算子[]はオペラントに対する加算命令らしい。つまりa[n]と*(a+n)は同じ。
配列の先頭のポインタにnを加算して、そのアドレスにある値を読み出す処理を行います。
この配列の先頭のポインタから何番目というのはC言語だとよく見る処理な気がします。私は苦手です。
こういうことを知っていると先人達に感謝して演算子を使える気がします。
9.Github Pages
AtCoderの過去問とかで出てきた解法を整理してどこでも読めるようにしたいなあと思って考えています。Wordpress以外で作りたいと思ったため、友人と調べていました。
C++日本語レファレンスやゼロから学ぶC++のようなサイトが作りたかったので、乗っかる先も真似してみようと思ってます。
10.おわりに
ほとんどメモです。役立つ日は来るのだろうか。