問題タブ [std]
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++ - 複数のスレッドからの追加、削除、反復子をサポートするスレッドセーフな C++ std::set
add
JavaのCopyOnWriteSetに似たもの、サポートするセット、および複数のスレッドからのremove
ある種のものを探しています。iterators
c++ - C++ std::system 'system' は std のメンバーではありません
「std::system(SomeString)」からの呼び出しを行う C++ プログラムのコンパイル中にエラーが発生しました。このプログラムは 3 年前にコンパイルされましたが、今日コンパイルすると、'system' は 'std' のメンバーではないというエラーが表示されます。std::system を使用するためにインポートする必要があるものはありますか、それは放棄されましたか、それとも別のヘッダー ファイルに移動されましたか。
c++ - C 配列の代わりに C++ ベクトルを使用するとパフォーマンスが低下する
C の配列ではなく、C++ で標準ライブラリのベクトルを操作すると、パフォーマンスが低下しますか?
c++ - 「名前空間stdを使用する」のはなぜですか。悪い習慣だと思いますか?
私は他の人から、コードを書くのは間違っているので、代わりに直接using namespace std;
使うべきだと言われました。std::cout
std::cin
なぜusing namespace std;
悪い習慣と見なされるのですか?それは非効率的ですか、それともあいまいな変数(std
名前空間の関数と同じ名前を共有する変数)を宣言するリスクがありますか?パフォーマンスに影響しますか?
c++ - ネストされたペアへのアクセス
ペアを分解するには、次のようにします。
入れ子になったペアにアクセスするにはどうすればよいでしょうか?
たとえば、ベクターを補足マップに含まれるアイテムと、補足マップに含まれていないアイテムに分割したい場合は、次のようにしました。
ここで 2 番目の問題があります。アプリケーションの実行中に user_info のステータス bool が変更される可能性があり、後で補足マップに含まれているだけでなく、true のステータス bool を持つアイテムでベクトルを再分割したいと考えています。 .
ただし、ネストされたペアの 2 番目の項目へのアクセスに問題があるようです。
次のことを試しましたが、ネストされたペアにアクセスできないようです!
c++ - std::string はどのように実装されていますか?
std::string の実装方法と c 文字列との違いを知りたいです。標準で実装が指定されていない場合、説明付きの実装は、標準で指定された文字列要件をどのように満たすかという点で優れていますか?
c++ - 標準文字列を検索/検索して置換するにはどうすればよいですか?
の部分文字列のすべての出現箇所を別の文字列に置き換える方法はありstd::string
ますか?
例えば:
c++ - c++ std vector - 無効化されたイテレータの質問
ポインターの標準ベクトルがあります。
このベクトルへのイテレータが無効になる可能性があるのは、どのような状況ですか?
オブジェクトが削除されると、それを参照するベクトル反復子が無効になると信じる理由があります。しかし、これは私には正しくないようです。これが Managed .NET のコンテナーの標準的な動作であると私は信じていますが、これは C++ ではうまくいかないように思えます。
これは Iterator It を無効にするべきですか? そうすべきではないように思えますが、デバッグするのが難しい問題で立ち往生しています! (回避策が怖いです-整数インデックスを介してベクトルを反復処理します。(これはうまく機能します...上記が無効化の問題を引き起こしている理由が怖いだけです)。
お時間をいただきありがとうございます。
編集:アドバイスをありがとう。一般的なコンセンサスは、上記のコードは危険ですが、Iterator を無効にしないということです。Visual Studio 2008 デバッガーでエラーが発生したと思います。プロジェクトを翌日開いた後、この無効化の問題がなくなったからです。そのため、コンピューターの多くの場合と同様に、他に何も機能しない場合は、リセットしてみてください。
c++ - C++ の `std::map` に参照を格納できないのはなぜですか?
参照はポインターではなく、オブジェクトへのエイリアスであることを理解しています。しかし、これがプログラマーとしての私にとって正確に何を意味するのか、つまり、ボンネットの下の参照とは何なのか、まだ理解していません。
これを理解する最善の方法は、参照をマップに保存できない理由を理解することだと思います。
参照をポインタよりも構文上の甘いものと考えるのをやめる必要があることはわかっていますが、どうすればよいかわかりません:/
c++ - std :: map::iteratorが増分時にプログラムをクラッシュさせる
何が原因でしょうか?
スタックトレースは次のとおりです。
そしてここにコードがあります:
編集:この次の問題は関連しているので、まったく新しい質問を開くことはしません。回答はそのままにしておきます。私はただ何かを知る必要があります。2つのイテレータがあります。1つはメインで、もう1つは関数呼び出し後のメイン内にあります。それらは両方とも同じマップに関連しています。さて、内部のものはすべて破損し、メインのもののループは反復を停止します。
これがコードです。
StartLayoutは次のとおりです。
そしてここにSetupChars()があります:
そして、これが起こることです:
最後の編集:私はそれを理解しました。新しいイテレータの元のマップのコピーが必要でした。