[解決済み] C++11と重複しているBoostの機能はどれですか?
2022-04-19 02:40:51
質問
数年前にC++のスキルを棚上げにしたのですが、今また必要になったとき、状況が変わっているようです。
C++11が登場しましたが、私の理解では、多くのBoostの機能と重複しています。
これらの重複がどこにあるのか、どの Boost ライブラリがレガシーになるのか、どの C++11 の機能を boost の代わりに使って、どの機能を使わない方が良いのか、などのまとめはありますか?
解決方法は?
C++11の言語機能またはライブラリで置き換え可能
- 前方一致 → 範囲指定
- 機能/前方 → 完全転送(と rvalue リファレンス , バリアドテンプレート そして std::forward )
- インプレイスファクトリー、タイピングインプレイスファクトリー → 完全な転送(少なくとも文書化されたユースケースについては)
- ラムダ → ラムダ式 (非多形性の場合)
- ローカル関数 → ラムダ式
- 最小-最大 → std::minmax , std::minmax_element
- 比率 → std::ratio
- 静的アサート → static_assert
- スレッド → <thread> など(ただし、チェックは この質問 ).
- タイプオブ → auto, decltype
- 初期化された値 → リスト初期化 (§8.5.4/3)
-
数学/特殊関数
→
<cmath>
以下のリストを参照してください。- ガンマ関数(tgamma)、対数ガンマ関数(lgamma)
- エラー関数(erf, erfc)
-
log1p
,expm1
-
cbrt
,hypot
-
acosh
,asinh
,atanh
TR1(でマークされています。 ドキュメント TR1 ライブラリであれば)
- 配列 → std::array
- バインド → std::bind
- 有効化する場合 → std::enable_if
- 機能 → std::function
- メンバー関数 → std::mem_fn
- ランダム → <random>
- 参照 → std::ref, std::cref
- Regex → <regex>
- 結果 → std::result_of
- スマートPtr → std::unique_ptr, std::shared_ptr, std::weak_ptr (ただし boost::intrusive_ptr はまだ置き換えができない)
- スワップ (配列のスワップ) → std::swap
- タプル → std::tuple
- タイプ別特徴量 → <type_traits>
- 順不同 → <unordered_set>, <unordered_map>
C++11からバックポートされた機能。
C++17の言語機能で置き換え可能。
- 文字列_参照 → std::string_view
- ファイルシステム → <filesystem> (ファイルシステムTS)
- オプション → std::optional ( ライブラリの基礎知識TS v1 )
- 任意の → std::any (ライブラリ基礎講座 TS v1)
-
数学/特殊関数
→
<cmath>
( 特殊算数IS ) の場合、以下のリストを参照してください。- ベータ関数
- (法線/関連/球面)レジェンドール多項式
- (正規/関連) レジェンドール多項式
- エルミート多項式
- Bessel (J / Y / I / K) 関数 (YはC++ではノイマン関数と呼ばれる)
- 球面ベッセル (j / y) 関数
- (不完全/完全)楕円積分の(第1種/第2種/第3種)
- リーマンのゼータ関数
- 指数積分Ei
- バリアント → std::variant ( P0088R2 )
標準チームはまだ作業中です。
- 数学共通因子 → std::experimetal::gcd, lcm (ライブラリファンダメンタルズ TS v2)
- コンセプトチェック → コンセプトTS
- 範囲 → レンジTS
- アジア → ネットワーキングTS(ソケットとタイマーのみ)
- 多倍長精度 → 数値計算機 TS
- コルーチン / コルーチン2 → コルーチンTS
の大部分を占める。 MPL は variadic テンプレートを使って切り詰めたり、削除したりすることができます。の一般的な使用例としては レキシカルキャスト は、std::to_string と std::sto で置き換えることができます。 X .
Boostのライブラリの中には、C++11に関連するものもありますが、さらに拡張されたものもあります。 ブースト.ファンクショナル/ハッシュ を含む ハッシュコンバイン およびC++11にはない関連関数があります。 ブースト.クロノ にはI/Oや丸め、その他多くのクロックなどがあるので、本当に却下する前にブーストのものを見てみるといいかもしれません。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] UbuntuにBoostをインストールする方法
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】C++17の新機能は何ですか?
-
[解決済み】Visual Studio 2010でBoostを使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] boost::noncopyableの利点は何ですか?
-
[解決済み] boost::threadとboost::mutexをc++11の同等品に置き換えるのは賢い選択ですか?