Serviceを読んで理解し、同意したものとみなします。char配列hogeがあるとして、この配列を元に「いづれかのフラグがたったらtrueを返す」様な関数をbit演算を駆使して作りたいと考えています。(bitを駆使したフラグ管理練習用なので「別にbit使わなくても...」は無しでお願いいたします)そこで、以下の様な関数を作成してみました。0;}しかしこれでは、一応正常に動きはしますが「for文内で1だったら速攻true返せば早くね?」という話になってしまい、bitに直している意味が無いように感じてしまいます。char配列を一括でbit列に直せる方法があれば良いのではとも考えましたが、そのような方法は私が調べた限りでは無いようで頓挫しています。あいまいな言葉で申し訳ないのですが、もっとスマートな方法はありませんでしょうか。ちがうのぉ!?」と驚愕しております。個の銅バッジbitsetを使うのはどうでしょうか。16:07その方法も検討しましたが、bitsetではフラグを立てるのにset関数を呼ぶ必要がありますので、結局for文で「hoge[i]が1だったらset関数を呼ぶ」という手間が増えてしまうため、現在の所使用を控えています。8:07いえ、「フラグの管理用に」使用するという意味です。char配列が元情報であるという事を前提としており私側でも変更が利かない点でもありますので、面倒をおかけしますがその点を考慮していただけると幸いです。8:42機能としては変換する部分とIsAnyの機能は別にすべきかと思います。「「for文内で1だったら速攻true返せば早くね?」という話になってしまい、bitに直している意味が無い」ということにそれが表れていると思います。票2std::findを使えば特定の値を検索することができます。見つからなかった場合はlastが返されるのでそれと比較すればいいでしょう。NUM;}もっとスマートな方法はありませんでしょうか。素直なコードを記述すればコンパイラーは効率的な処理を生成してくれます。C++でコンパイルするとC言語のmemchr関数に展開されます。memchr関数は自身の責任範囲内で効率的な検索を行います。intを使うことで複数まとめて読み込んでいます。C++も32bitに関してはアセンブラ言語で記述されており複数まとめて読み込んでいました。結局、特殊なコードを記述するよりも、標準ライブラリを活用しシンプルな記述をすることが効率的かと思います。std::findとboost::findの違いについてBoostはBoostは考案された新機能を標準化させる前の試験運用の場であるとも言える。いう位置づけですので、STLとBoostとで全く同じ機能を持つ場合もあれば、STLに取り込まれる際に変更される場合もあり、またSTLに取り込まれた後にBoost側で更に新機能を追加される場合もあったりとまちまちです。std::findとboost::findとが似ているのもそのためです。個の銅バッジ論点がずれてしまい申し訳ないのですが、boost::findというものとは完全に別物(std::とboost::からみても)なのでしょうか。調べてみると機能自体に差は無いようなのですが。質問文ではboostに触れられていなかったために言及せず、STLを使って説明しました。9:34@sayuriさん。持たせておけば良いと思います。|0ビットで表現されてないものをその場でビット表現に直してもスマートにはならないと思われます。ビット表現に直したものをあらかじめ作るかキャッシュすると意味があるかもしれません。昔ながらの局所最適化で、大きな整数型でまとめて読むと早くなるケースがあります。スマートとは言い難いですね。個の銅バッジ1それは、セグメンテーション違反やバスエラーを引き起こすので、やってはいけない方法です。hoge配列の中にひとつでも1があるかどうかを判定するだけだからfor文の途中でリターンしていいだけでしょう。0でないかどうか判定すればflagsの存在意味は出るのではないでしょうか。この0x16のような「マスク」を引数に取る関数とか作ってみるとかしてはどうでしょうか。スマートと言っても練習目的ならこのぐらいでいいと思います。bool型配列にしてみるとか、シフトのかわりに(内容が、0x1、0x2、0x4、0x8、・・・の定数配列など利用して)マスクを使ってみるとか、いろいろやってみてから、C++の便利なクラスの使い方を学んでみるとか。なんてものもあります。方を使う方がいいと思います。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。どのような違いがありますか9char型のハミング重みとハミング距離を計算したい。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。