タグ

QiitaとC++に関するmohnoのブックマーク (17)

  • strlen() の深淵 - Qiita

    あらまし strlen() という関数がある。御存知の通り、文字列の長さを算出する標準 C ライブラリの関数だ。 やってることは単純で、例えば以下のように実装できる。 size_t strlen_simple(const char* str) { const char* p = str; while (*p) ++p; return size_t(p - str); } '\0' が見つかるまでポインタを進め、初期位置との差分を返すだけだ。これで機能的には std::strlen() と同等である。 では、速度的にはどうだろう?適当にベンチマークを書いて MSVC 2022 でコンパイル&実行するとこうなった。

    strlen() の深淵 - Qiita
    mohno
    mohno 2023/08/07
    今どきのコンパイラは大変だなあ。/インライン展開は速いままだとコード量が増えるんだろうな。
  • モダンプログラマになれない組込みプログラマの苦悩 - Qiita

    はじめに 10年以上組込みエンジニアをしている@yagisawaです。 Qiitaのトップ記事では新しいフレームワークの使い方とかモダン言語の新しい言語仕様の解説とかが流れてきて、いつも羨ましいなーと思いながら読んでいます。 記事は組込みシステム開発をしていて経験したこと・感じたことを自虐ネタとして書き連ねていこうと思います。他ITエンジニアの人に「うわっ、可愛そう」って思ってもらうのが目標です(ぇ 各業界それぞれに悩みはあると思うので、自分たちが一番不幸とかは思っていません。おそらく隣の芝が青く見えているだけです。それよりあまり組込みの記事は見かけないので、「組込みエンジニア仕事ってこんな感じ」というのを知ってもらう意図があったりします。 内容によっては「それはあなたの設計が悪いからです」と言われてしまうようなところもあるとは思いますが、建設的なご意見は大歓迎ですが基は温かい目で見

    モダンプログラマになれない組込みプログラマの苦悩 - Qiita
    mohno
    mohno 2021/03/18
    16bitなのにRAM 4KBなのか。MISRAはねぇ、ちょっと過剰な気はするし、組み込みでは効率も悪くなるんじゃないだろうか。「returnひとつ」はAdvisoryみたいだが、検証にひっかかるのかな。
  • Qiitaでたぶんもっとも参考にしてはいけないPythonの導入方法 - Qiita

    はじめに Pythonは今最も習得希望人口の多い言語である。 それはヘビーなデベロッパーからライトなオフィスコンピューティングまで多岐にわたる。 おそらく「Pythonを使えば○○ができる」と喧伝されているのを見聞きしているからだろう。 この記事ではそんなPythonを一から導入し開発できるようにすることを主にする。 OSのセンテイ Pythonの開発でもっとも優れたOSはWindowsである。 単純にPython.orgの公式から対象のバージョンをいくつか選んでダウンロードして適当にインストールすればそれですべてを始められるので、MacLinuxのようにシステムデフォルトと別verとのインストール共存やパッケージ管理ツールを意識する必要はない。 パスは通るし、複数のバージョンを同時に入れてもビルドバージョンですら分けて共存できるので簡単。 処理系 Pythonはインタプリタ界の変態言語

    Qiitaでたぶんもっとも参考にしてはいけないPythonの導入方法 - Qiita
    mohno
    mohno 2020/12/27
    他の記事に警鐘を鳴らすのかと思ったら「これが」ってことか。「C++の本気」←constexprを使うのか。
  • C++20 Approach to Units of Measurement - Qiita

    この記事はなんですか こんにちは。キャディでアルゴリズム開発をしている「いなむのみたまのかみ」です。 この記事は CADDi Advent Calendar 1日目の記事です。 ここ数年は型で単位をつけるライブラリを作るのが趣味になってしまいずっとそればかりやっている。 最近では、最強の単位計算ライブラリを作りながらC++20の勉強をしている。 そこでライブラリの機能紹介をしながら、勉強したC++20の機能や技法も紹介する記事を書くことにした。 ライブラリ概要 リポジトリはここ。 単なる数値に単位の型が付いて型安全で単位つき計算できるライブラリである。 #include <mitama/dimensional/prelude.hpp> #include <mitama/dimensional/systems/si/all.hpp> #include <iostream> using nam

    C++20 Approach to Units of Measurement - Qiita
    mohno
    mohno 2020/12/01
    「私の知ってるC++」じゃないと言いはじめて久しいなあ。みんな、こういう機能、使ってるんだろうかと思うけど。
  • 浮動小数点数オタクが AtCoder Beginner Contest 169 のC問題をガチで解説してみる - Qiita

    どうも、浮動小数点数オタクのmod_poppoです。 昨日開催された ABC169 の C 問題が浮動小数点数の罠な問題だったらしいので、どこが罠なのか、そしてどうすれば罠を回避できるのかを解説してみます。 また、典型的な誤答に対しては、それを落とすためのテストケースも用意しました。 問題文(引用) まず最初に問題文を引用しておきます。 AtCoder Beginner Contest 169 | C - Multiplication 3 問題文 $A\times B$ の小数点以下を切り捨て、結果を整数として出力してください。 制約 $0\le A\le 10^{15}$ $0\le B<10$ $A$ は整数 $B$ は小数第 2 位まで与えられる 入力 入力は以下の形式で標準入力から与えられる。

    浮動小数点数オタクが AtCoder Beginner Contest 169 のC問題をガチで解説してみる - Qiita
    mohno
    mohno 2020/06/02
    Bを100倍後に四捨五入、が現実的だろうな。入力書式が決まっているならC言語(←オイコラ)→#include <stdio.h> #include <stdint.h> int main(void) { int64_t a; int b, c; scanf("%lld %d.%d", &a, &b, &c); printf("%lld\n", a * (b * 100 + c) / 100); }
  • C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita

    追記: 記事は g++ について書かれており、clang については補足で述べる程度でしたが、clang側の検証結果が間違っておりました。 別途 clang++ で検証した記事も書きましたので、ご覧いただけますと幸いです。 記事の目的 昨日、株式会社フィックスターズの「Fixstars Tech Blog /proc/cpuinfo」に以下の記事が掲載されました。 RustC++に速度で勝った話 - Fixstars Tech Blog /proc/cpuinfo 記事では、上記記事の 手元環境における追試 C++の敗因/Rustの勝因分析 条件をある程度統一した際のベンチマーク結果 の3点を行います。 ベンチマーク環境 OS Fedora 30 CPU AMD A6-1450 Memory DDR3-1333 4GB x 1 (4GB) GCC 9.2.1 Rustc 1.39.

    C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita
    mohno
    mohno 2019/09/19
    「C++の敗因/Rustの勝因分析」「ループアンローリングをするか否かの最適化オプションが揃っていなかったことによって発生したまやかし」←ちゃんと調べてて偉いなあ。まあ、いまさら Rust を覚える気にはならないが。
  • "call by reference"ではない動作を「参照渡し」と言っている記事まとめ - Qiita

    C++、C#、PHP等には"call by reference"という機能があります。ですが、この"call by reference"ではない動作を「参照渡し」と言っている記事をまとめました。対象には表記揺れにすぎない「参照呼び」や「参照呼び出し」も含めています。 他にもある、とか、実は否定しているとかあればコメントや修正依頼をください。ただし、追記や脚注など目立たない形で「実はそうは言わない」などと補足があったり、コメント等でそのような指摘があっても、全ての読者がそこまで細かく見るとは限らないため、除外しません。つまり、厳密には違うとか、機能ではなく動作のことを言っているとか色々言い訳を付けていても、表面だけ読んでいると「『参照渡し』と言っても良い」と読み手が感じられそうであれば、対象としています。 "call by reference"な動作とは? 定義や詳しい動作の解説はここではし

    "call by reference"ではない動作を「参照渡し」と言っている記事まとめ - Qiita
    mohno
    mohno 2019/04/21
    おおっ、と思ったがC言語はなかった(市販書籍でも参照渡しと書いてる記事があるらしいんだが、勘弁してほしい)。↓C++に必要なのはコピーコンストラクタのためです。
  • 回収できなかった案件の恐怖 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 回収できなかった案件についてお話しよう はじめに 今からx年前の事。某技術者が多く集まるSlackにて C++でWebクローリング出来る人はいないか? とのことで、以前より Boost.Asioの記事をかいてる私に話がきた まず案件をくれた人について、はじめての取引なので周辺の人に話をきいたが 少し甘いという意見はあるが、誠実で良い人という意見だったので請けた プロジェクト開始 案件を紹介してくれた人の友だちよりメッセージがきてChatworkに入った 具体的な案件に関しては担当の技術者と話をしてほしいとのことで 金額は時給1万円で月末

    回収できなかった案件の恐怖 - Qiita
    mohno
    mohno 2019/02/28
    「はじめての取引なので周辺の人に話をきいたが少し甘いという意見はあるが、誠実で良い人という意見だったので請けた」←知らない人の仕事は怖いよね。今のところ手を出さずに済んでるけど、何がどう転ぶか。
  • C++Builder とトライグラフ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    C++Builder とトライグラフ - Qiita
    mohno
    mohno 2018/12/24
    トライグラフはどうでもいいけど:-p 「「せめて BCC64 を C++17 対応版にしてくれ! (C++17 対応は Win32/Win64 同時にやれ)」という声もあちこちで聞かれた C++Builder 10.3 Rio」←うわぁw
  • C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? C++ Advent Calendar 2018 この記事はC++ Advent Calendar 2018 15日目の記事です。 14日目: VTKライブラリ 16日目: C++のエラー処理との付き合い方 当初見積もりよりも大幅に長い記事となり、投稿したのは12/22で1週間遅刻です。すみません。 お知らせ cpprefjpにchar8_t型追加について解説を書きました。ぎゅぎゅっとコンパクトに、また査読を受けて中立的な表現で書いていますので、よければどうぞ。 UTF-8エンコーディングされた文字の型としてchar8_tを追加 - c

    C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita
    mohno
    mohno 2018/12/23
    そこまでしてC/C++を使う人がどれだけいるかなあ。「C標準では文字を受け取る引数はint型」←そこは引数がcharでも内部はintだったり、オーバーロードがない時代という歴史的経緯があるので。負債というならShift_JIS。
  • 今後必要になるプログラム言語

    今後必要になるマスター言語 JAVA RUBY C++ PL/SQL JAVA JAVAアプレット JAVAサーブレット JAVAscript この3つのうちJAVAServletおよびJavaScriptは必須。 条件としてJavaBeansについて的確な知識があり、自分で設計取り回しができるレベル。 JavaBeansの設計とは、JAVA言語特有の空間的なソースやデータの配置を把握してることが条件なので、システムエンジニアへの質問もしくは仕様理解に努めること。 国内外問わずシステムのシェアはWINDOWS主体でありほぼJAVAで統一されている。 さらに動的HTMLなどについてもJAVAサーブレットの知識が流用される。 JavaScriptの知識については特に必要ないがBeansその他に直結するケースが多いので仕様確認。 RUBY この言語についてはJAVAのサブルーチンとしての位置づけ

    今後必要になるプログラム言語
    mohno
    mohno 2018/11/07
    冒頭で「Java」のくくりに「JavaScript」入れてるところで“盛り上がってる理由”がわかったけど、これ、一社限定の知見だよね。1974年生まれとして、こういう知識でやってこられた会社がどこか知りたいぞ:-p
  • バカにC言語は難しい~プログラミングの機会損失~

    プログラミングは難しい 注意: この記事は「プログラミング学習とはかくあるべき」、「こうやって学習するのが一番」ということを言いたいのではなく、プログラムを勉強したいが右も左もわからない人に少しでも勇気と情報を与えることを目的としています。過去の挫折経験からか、なかば愚痴っぽくなっていますがご勘弁を はじめに自分のプログラミング歴を軽く紹介して起きます。 年 言語 学習目的 2010 C言語 学校の実習 2011 C++ 組み込み系 2012~2017 None None 2018 Go,Js,Scala,Python 研究、Web開発 といった感じです。2012~2017年がNoneになっているのには原因が「C言語に挫折し、とにかくプログラミングがしたくなかった」からです。そう思ってしまった原因と、そこから立ち直ったことがこの記事を書いた理由です。 「おいおい、C言語ごときで挫折とは情け

    バカにC言語は難しい~プログラミングの機会損失~
    mohno
    mohno 2018/10/23
    C言語は文字列の処理すら関数呼び出しが必要になるからね。そこだけでハードルが高い。“覚えること”はC++の方が多いけど。
  • 「オブジェクト指向とは、現実世界を正しく捉えること」という理解はデメリットのほうが大きい

    これは「オブジェクト指向」がよくわかってない人の書いたポエムである。 そういうのが嫌いな人はお帰りください。 はじめに リンクは貼らないが「オブジェクト指向の質とは現実を正しく捉えること」と書かれている記事(以下、元記事)がバズった。 私は正直「オブジェクト指向」の何たるかを理解しているとは言い難い。 しかし、そんな私でも元記事がいくつかの点でおかしい、もっと厳しくいうと開発現場に混乱をもたらす可能性を持っていることは理解できる。そこでこの記事では「オブジェクト指向とは〇〇である」という言及は行わずに、元記事の問題点を指摘するに留める。 長方形と正方形の例 オブジェクト指向プログラミングと現実世界の話というとBobおじさんが『アジャイルソフトウェア開発の奥義』に書いた正方形と長方形の話が有名だ。 話は簡単だ。「正方形クラスは長方形クラスを継承するべきか?」というものだ。 少しだけ詳しく見

    「オブジェクト指向とは、現実世界を正しく捉えること」という理解はデメリットのほうが大きい
    mohno
    mohno 2018/10/09
    「なにがいけなかったのだろうか?」←SetWidth/Heightを仮想関数にしたこと。または、仮想関数にしたのにgでSetWidth/Heightの動作が変わらないと想定したこと。ある辺の長さが他の辺に影響するなら現実でも"is a"は不成立。
  • C++完全理解ガイド Rev1.4.01 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに C++を完全理解したので完全理解ガイドを書く。 最初に言っておくがタイトルは詐欺で、実際はポエムである。 僕は仕事C++を書いたことはないのでなんか変なことを言っているかも知れない。 ところで無職になったので、普通にC++で職がほしい。 2018年6月から受託で仕事をもらい、毎日C++17を書いています。 2018年9月から雇用され、毎日C++17を書いています。 かなり雑に書いているはずなので、コメント等でどんどんマサカリを投げてほしい。 僕は何者か 工学部を卒業して4年ほど高校の理科教師をやっていたが、現在無職になった人

    C++完全理解ガイド Rev1.4.01 - Qiita
    mohno
    mohno 2018/03/28
    「C++はその進化とともに玄人に優しくなりすぎた」(Bjarne Stroustrup) あと Visual C++ はちょっとずつ実装進んでるけど、破壊的変更があるからC++17オプションが必要なんだな。まだ見ぬ江添本の評価は読んでから:-)
  • ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita

    はじめに はじめまして。 NTTデータ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 C や C++ を使用しているとしばしばビット演算を行う場面が出て来ます。 計算機リソースが限られている状況では、ビットを用いることでデータ量を少なく済ませたり、計算コストを小さく抑えたりすることができるメリットがあります。 記事では、ビット演算を用いて実現できる処理について、簡単なものから高度なものまで集大成します。極力わかりやすく頑張って執筆しました。特に前半 4 つはビットの説明の中でもかなりわかりやすい方だと思います。後半の 7 つのテーマは比較的高度なアルゴリズムの話題ですので、フラグ管理やマスクビットについて詳しく学びたい方は前半 4 つを中心に読んでいただいて、後半 6 つは必要に応じて読んでいただければと思います。反対にビットの知識はあってビットを用いたアルゴリズ

    ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita
    mohno
    mohno 2018/02/20
    ビット演算か、最近あまり使わないなと斜め読みしてたが、「部分集合を列挙」「next_combination」「Xorshift」が興味深い。巡回セールスマンはメモリ食いそうだけど「有効に利用できた場面」があるらしい。
  • thisを書く派?書かない派? - Qiita

    あすかです。 プログラミングしてる時、たまに気になる話を雑めに書いてみます。 (´・ω・`) C#、VBやJavaなど、クラスベースのオブジェクト指向言語を前提にした話ですが、this(Me)を書いているプログラム、そうでないプログラムをよく見かけます。 例えば、thisを書くのは このような場面ではthisを書きます。文法上の制約ですから当たり前です。 今回は、このようなものではなく、thisを書かなくてもいい場面の話です。 thisを書くメリット ちなみに私はthisを書く派です。 というのも、後でコードを読み返す時に、ローカル変数とフィールド変数の区別が一発で付くからです。 VSはthisを色分けしてくれますよね。 けっこう地味かもしれませんが、長いクラス(といっても500行を超えるようなクラスはめったに書きませんが)の一部分だけを読む時に、thisの存在はかなり役に立ちます。 他の

    thisを書く派?書かない派? - Qiita
    mohno
    mohno 2017/10/14
    (当然現場に合わせるけど、それを除けば)個人的には付けないことが多い。フィールド変数/プロパティと引数/ローカル変数に同じ名前は使わない。よい考察。
  • C++ のソースに twenty one と書いたら 21 になるようにする - Qiita

    が面白かったので書いてみた。 目的は、 one や twenty one をソースコードに直接書けるようにすること。 twenty one / three を 21/3 と解釈すること。 辺り。 念の為に書いておくと、何の役にも立たない。 version 1 -- operator() #include <iostream> struct numbase { int m; numbase( int m_ ): m(m_){} int value() const { return m; } virtual ~numbase(){} }; struct num : public numbase { num( int m_ ): numbase(m_){} }; struct ten : public numbase { ten( int m_ ): numbase(m_){} num oper

    C++ のソースに twenty one と書いたら 21 になるようにする - Qiita
    mohno
    mohno 2014/08/25
    operator() の使い方に脱帽した:-O / operator"" だと:-O
  • 1