問題タブ [c++-standard-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - マルチコアコンテキストでもstd::chronoスレッドセーフ保証はありますか?
まず、std :: chronoの関数を呼び出すと、スレッドセーフであることが保証されていると想定しています(未定義の動作や競合状態、または別のスレッドから呼び出された場合に危険なものはありません)。私は正しいですか?
次に、たとえばWindowsでは、マルチコアプロセッサに関連するよく知られた問題があり、時間関連システムの一部の実装で、特定のコアに任意の時間情報を強制的に取得できるようにします。
私が知りたいのは:
- 標準でstd::chronoを使用して、ある種の問題が発生しないと考える保証はありますか?
- またはそれは実装が定義されていますか
- または、Windowsでは常に同じコアから時間を取得する方がよいことを意味する保証が明示的に欠如していますか?
c++ - C++ 標準ライブラリのヘッダーはどこにありますか
ファイル システムのどこに C++ 標準ライブラリのヘッダーがあるのだろうか。特に、ベクター テンプレートの定義を探しています。/usr/include/ とさまざまなサブディレクトリを検索しました。また、「locate vector.h」を試してみると、多くのベクトルの実装が表示されましたが、標準の実装はありませんでした。私は何が欠けていますか?(ディストリビューションはGentooです)
背景: 私はほとんどの時間ベクトルを反復するライブラリをプロファイリングしています.gprof は、ほとんどの時間が費やされていることを示しています.
おそらく、これは std::vector::push_back で内部的に発生することですが、よくわかりません。
c++ - 標準ライブラリコンテナの共通ベースがないのはなぜですか?
ただ興味がない...
size()
コンテナのライブラリを設計する場合、とのようなメソッドの(おそらく抽象的な)宣言を持つ共通の基本クラスから確実に派生しますinsert()
。
標準ライブラリコンテナがそのように実装されない強い理由はありますか?
c++ - C++ マップの値としての文字配列
次のようなものを定義したい
上記の宣言は C++ コンパイラによって受け入れられ、エラーはスローされませんが、このようなことをすると
次のようなエラーが発生します。
ネットワーク ストリーム操作を最適化するため、固定サイズの文字配列を定義することが重要です。それを達成する方法はありますか?char *
またはを使用したくありませんstd::string
。
c++ - C ++:文字列演算子のオーバーロード
既存のクラスの既存の関数/演算子をオーバーロードできますか?
私がやろうとしていたこと:
しかし、これは私にエラーを与えます:
これどうやってするの?または私はできませんか?
c++ - 文字列の分割 C++
重複の可能性:
C++ での文字列の分割
ファイルをコピーするプログラムがあります。
ディレクトリパスである文字列がありますが、それは単なるファイル名である可能性があります。例えば:
rootdirname\childdirname\filename.ini
または次のようになります。
filename.ini
私はまだC ++に慣れていないので、文字列を分割し\
てディレクトリを作成する必要がありますMKDir
.
文字列を分割する方法を知っている人はいますか??
c++ - std :: map []演算子を使用したスワッピングと割り当て(定数の問題)
私は現在、std::map
:で[]演算子を使用しています。
クレイジーなことは何もありません。ただし、私の値にはconstpublicmemberが含まれています。
私のアプリケーションの詳細に立ち入ることなく、constメンバーは私たちが保持したいものです。それを考えると、map[key] = value
最初に既存の値を消去してから、新しい値を挿入するようなことをしていると思いました。
ただし、実際に起こっているように見えるのは、operator []
が値への参照を返すため、=代入またはムーブ演算子などを使用しようとすることです。明らかに、メンバーを再割り当てできないため、これは機能しません。さて、私は消去を呼び出してから自分自身を挿入するだけで大丈夫ですが、map[key] = value
この「スワップ」手法を使用してプルオフする方法があるかどうか疑問に思いました。
c++ - countやeraseなどのunordered_set操作がsize_typeを返すのはなぜですか?
どうやら、厳密にブール値ではないものunordered_set::erase
をunordered_set::count
返します(論理的には、実際の型については話していません)。
リンクされたページは、消去の3番目のバージョンを読み取ります。
キー値キーを持つ要素を削除します
これには、特定のキーを持つ要素が複数存在する可能性があることを示唆するトーンがあります。これについては明確に述べていませんが、多くのように聞こえます。
さて、セットのポイントは、順序付けられていないものであっても、各要素を1回持つことです。
標準ライブラリはbool
型の存在を認識し、それをのようなブール値に使用しますunordered_set::empty()
。それで、上記の場合に戻ることのポイントは何size_type
ですか?ハッシュの衝突にもかかわらず、コンテナは異なるキーを持つ要素を区別する必要がありますよね?それでも信頼できますか?
c++ - c ++ operator()の動作
std :: for_eachとオーバーロードされたoperator()を持つオブジェクトを使用して、ベクトルコンテンツに関するデータを蓄積するとします。
この出力:
なぜnon-zero elements
0なのですか?
c++ - C ++ 2011のnextafterとnexttoward関数?
C++ 2011 標準ライブラリの nextafter 関数と nexttoward 関数の違いは何ですか?