問題タブ [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++ - std::map で BOOST_FOREACH を使用する
BOOST_FOREACH を使用して std::map を反復処理し、値を編集したいと思います。よくわかりません。
もちろん、参照による繰り返しではないため、これは何も変更しません。したがって、代わりにこの行を置き換えます (Boost ドキュメントの例に従って):
コンパイラエラーが発生します:
助言がありますか?
c++ - c++ で char 配列の代わりに std::string を使用し、配列の代わりに std::vector/list のみを使用することに実際的な制限はありますか?
私は自分のコードでベクトル、リスト、文字列、および wstring を執拗に使用しています。代わりに chars と wchars を時々使用することにもっと興味を持つようになるキャッチ 22 はありますか?
基本的に、標準テンプレート ライブラリをサポートする環境で作業する場合、プリミティブ型を使用した方が実際に優れている場合はありますか?
c++ - CLR は C++ STD に干渉しますか?
clr の下でコンパイルするコードと、単一のプロジェクトで管理されていない他のコードがあります。
私の common.h ファイルには、必要な std ライブラリ ヘッダーがすべて含まれています。これは、document_manager.cpp (CLR) によってインクルードされる main_window.h (WinForm) によってインクルードされる manager.h (manager.cpp (CLR なし) の前方宣言) によってインクルードされます。
実行時に、あらゆる種類の奇妙な動作が発生します。あるインスタンスでは、フォームが読み込まれません。デバッグのためにプログラムを数回一時停止すると、malloc.c で std::string のメモリを再割り当てしていることがわかりました。コードを変更することで、ostream で System::InvalidMemory (と思われる) 例外を受け取ることができます。
CLR が std ライブラリを管理しないようにするにはどうすればよいですか?
私のファイルのソースが欲しい人がいたら、聞いてください。
編集: コールスタックには、フォームの読み込み時に実行されるマネージド コードがいくつかあります。ウィンドウの init コールバックでは、マネージからネイティブへの遷移があり、次にマネージャー クラスがあります。後で、私は
コールスタックには、std::basic_string::assign、次に他の std:: 関数、最後に malloc 関数が表示されます。
編集:ファイルの書き込み時にスローされる例外:
c++ - カスタムC++アロケータの説得力のある例?
std::allocator
カスタムソリューションを支持するために捨てる本当に良い理由は何ですか?正確性、パフォーマンス、スケーラビリティなどに絶対に必要な状況に遭遇したことがありますか?本当に賢い例はありますか?
カスタムアロケータは、私があまり必要としなかった標準ライブラリの機能でした。ここSOの誰かが、彼らの存在を正当化するための説得力のある例を提供できるかどうか疑問に思っていました。
c++ - 文字列で += を使用すると、Stange seg fault が発生する
これでC++について私が気付いていない明らかな何かがあるに違いありません。
関数の先頭でファイル名を「出力」すると、GDB で次のようになります: (const string &) @0x9505f08: {static npos = 4294967295, _M_dataplus = {> = {<__gnu_cxx::new_allocator> = {}, }, _M_p = 0x950a8e4 "../config/pythonFile.py"}}
一体、.append() が機能し、+= が機能しないように、ファイル名が正しくフォーマットされていないのはどうしてですか?! C++ のオーバーロードされた関数 += に奇妙な点がありますか?
g++ バージョン 3.4.6
c - fscanf()を使用して行を読み取る際の問題
次のコードを使用して行を読み込もうとしています。
しかし、どういうわけか私は毎回最初の行しか取得しません。これは行を読むのに悪い方法ですか?期待どおりに機能させるには、何を修正する必要がありますか?
c++ - std::vector からのランダムな削除が std::list よりも速いのはなぜですか?
std::vector からのランダムな削除が std::list よりも速いのはなぜですか? 高速化するために私がやっていることは、ランダム要素を最後に交換してから最後を削除することです。ランダムな削除が目的であるため、リストの方が高速になると思いました。
結果 (秒単位):
Vec swap delete: 0.00000909461232367903
List normal delete: 0.00011785102105932310
c++ - イテレータを無効にせずにアイテムを追加および削除する
'オブザーバー'のリストを持つオブジェクトがあります。これらのオブザーバーは通知を受け取り、自分自身または他のオブザーバーをオブジェクトに追加またはオブジェクトから削除することで、この変更に対応する場合があります。
これをサポートするための、堅牢で、不必要に遅くない方法が必要です。
おそらく、add_とremove_によって設定されたフラグを使用して、イテレーターが無効になった場合にリセットし、各オブザーバーに「世代」カウンターを設定して、すでに呼び出しているかどうかを確認できます。
c - strtol、strtod は安全ではありませんか?
文字列の constness をキャストすることをstrtol()
効果的に許可 (および強制) しているようです。strtod()
上記では、自分でキャストを実行しませんでした。ただし、基本的には、警告などなしで、 myをfor mestrtol()
にキャストします。(実際には、 として入力することはできないため、安全でない型の変更が強制されます。) 本当に危険ではありませんか?const char *
char *
bar
const char *