STLアルゴリズムはそのアルゴリズムを適用する範囲の先頭と末尾のイテレータのペアを引数に取ります。実際には範囲全体にアルゴリズムを適用させるケースが多く、イテレータのペアを書くのが冗長に感じることがあります。そこでBoost.Rangeには、範囲を引数に渡すことでその範囲全体にSTLアルゴリズムを適用する関数たちがあります。Boost.Rangeのfind関数の実装例を見てC++03/C++11/C++14の比較をしたいと思います。 C++03 まず、範囲なら何でも、コンテナでも組み込み配列でもアルゴリズムに適用できるように、begin関数、end関数を定義します。 namespace ns { //コンテナ版begin/end関数 //非const、constでオーバーロード template <typename Container> typename Container::iterat
シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて
問題 サーバー内の、最近いじられたファイルを探したいんですけど! どうしたらいいですか? 答え ガンブラー攻撃でファイルが更新されていないか気になるときにも使えます。 findコマンドはファイル名(正規表現可)、更新日、所有者、グループ、サイズなどで、ファイル、ディレクトリを検索ができる。 更新日が最近の10日以内のファイルを見つける。場所はカレントディレクトリ「.」以下から。詳細に(-ls) find . -mtime -10 -ls 更新日が最近の10日以上前のファイルを見つける(こう書くと古い方を見てしまう) find . -mtime +10 更新日がちょうど○日のファイルを見つける find . -mtime 10 更新日など詳細が見えなくてよいときは -print を指定するか、省略する。 おまけ1 ちなみに正規表現で検索はこう。パス全体がマッチするかどうかを見る。 パス全体が
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く