問題タブ [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::thread エラー (スレッドが std のメンバーではありません)
Macportsを使用してgcc4.4をコンパイルしてインストールしました。
-> g++ -g -Wall -ansi -pthread -std=c++0x main.cpp... を使用してコンパイルしようとすると:
コンパイラは次を返します。
しかし、std::cout <<...
うまくコンパイルされます..
誰でも私を助けることができますか?
c++ - 1つの引数を持つメンバー関数のstd::for_each
タイトルに書かれていることをどうやって実装するのか気になります。私は次のようなことを試しました...
std::for_each( a.begin(), a.end(), std::mem_fun_ref( &myClass::someFunc ) )
someFunc
しかし、「term」(私は3番目の引数を意味すると仮定しています)は、 1つの引数(に格納されているオブジェクトのタイプ)を取りますが、1つの引数を持つ関数に評価されないというエラーが表示されa
ます。
私がやろうとしていることは、標準ライブラリを使用して可能かどうか疑問に思っています(ブーストを使用して簡単に実行できることはわかっています)。
PS手動で繰り返し処理してオブジェクトをに渡す場合と比較して、使用for_each
しmem_fun_ref
てパフォーマンスに影響がありますか?a
someFunc
c++ - C++0x でハッシュ値を組み合わせるにはどうすればよいですか?
C++0x が追加されますhash<...>(...)
。
boosthash_combine
に示されているように、関数が見つかりませんでした。このようなものを実装する最もクリーンな方法は何ですか? おそらく、 C++0x を使用していますか?xor_combine
c++ - 標準文字列内の位置が存在するかどうかを確認する方法?? (c++)
私は長い文字列変数を持っており、その中で特定の単語を検索し、それらの単語に従ってテキストを制限したいと考えています。
次のテキストがあるとします。
"この驚くべき新しいウェアラブル オーディオ ソリューションは、シャツの前面に埋め込まれた実用的なスピーカーを備えており、あらゆる状況に適した音楽や効果音を再生できます。自分の映画に出演しているようなものです"
そして言葉:「解決策」、「映画」。
大きな文字列 (結果ページの google など) から減算したい:
「...新しいウェアラブル オーディオソリューションには、動作するスピーカーが組み込まれています...」そして「...自分の映画に出演するようなものです」
そのために私はコードを使用しています:
しかし desc.at(loc1-i) は OutOfRange 例外を引き起こします...例外を引き起こさずにその位置が存在するかどうかを確認する方法がわかりません!
助けてください!
c++ - gccのSTLは現在右辺値参照をサポートしていますか?
Visual Studio 2010の標準ライブラリは、右辺値参照をサポートするように書き直されていることを知っています。これにより、パフォーマンスが大幅に向上します。
gcc 4.4(およびそれ以降)の標準ライブラリ実装は右辺値参照をサポートしていますか?
c++ - 演算子<<オーバーロード
<<演算子をオーバーロードしようとしています。私も良いコーディングを練習しようとしています。しかし、using名前空間stdのコメントを外さない限り、私のコードはコンパイルされません。私はこのエラーを受け取り続けます、そして私は知りません。g++コンパイラを使用しています。
名前空間stdを使用せずに<<演算子をオーバーロードする正しい方法を誰かに教えてもらえますか?
c++ - ifstreamが最後まで読まないのはなぜですか?
私はメモ帳のようなプログラムを作っています。ファイルからテキストを取得するには、次のようにして各文字をバッファに読み込みます。
ただし、exeをロードすると、MZの後で停止しますが、メモ帳はexe全体を読み取ります。ifstreamをバイナリモードに設定しましたが、それでもうまくいきません。私は何が間違っているのですか?ありがとう
コード:(乱雑)
c++ - 定数式でnumeric_limits::max()を使用する
クラス内で、可能な最大のint値である定数を定義したいと思います。このようなもの:
この宣言は、次のメッセージでコンパイルに失敗します。
nude.cpp:8:エラー:'std :: neuro_limits :: max()'は定数式に表示できませんnumeric.cpp:8:エラー:関数呼び出しは定数式に表示できません
これが機能しない理由は理解できますが、2つのことが奇妙に見えます。
定数式で値を使用するのは自然な決断のように思えます。言語設計者がmax()を関数にして、この使用を許可しないことにしたのはなぜですか?
仕様は18.2.1で次のように主張しています
nude_limitsテンプレートでstaticconstと宣言されたすべてのメンバーについて、特殊化は、これらの値を整数定数式として使用できるように定義する必要があります。
シナリオで使用できるはずで、エラーメッセージと矛盾しないのではないでしょうか。
ありがとうございました。
c++ - std 関数 std::_Rb_tree_rebalance_for_erase () でのセグメンテーション違反
(将来の読者への注意:当然のことながら、エラーは私のコードにあり、 std::_Rb_tree_rebalance_for_erase () ではありません)
私はプログラミングに少し慣れていないため、std 関数から発生しているように見えるセグメンテーション違反に対処する方法がわかりません。修正方法がわからないので、何かばかげたこと (つまり、コンテナーの誤用) をしているといいのですが。
正確な誤差は
プログラムは信号 EXC_BAD_ACCESS を受信しました。メモリにアクセスできませんでした。
Reason: KERN_INVALID_ADDRESS at address: 0x000000000000000c
0x00007fff8062b144 in std::_Rb_tree_rebalance_for_erase ()
(gdb) backtrace
#0 0x00007fff8062b144 in std::_Rb_tree_rebalance_for_erase ()
#1 0x000000010000e593 in Simulation::runEpidSim (this=0x7fff5fbfcb20) at stl_tree.h:1263
#2 main.cpp:43 のメイン () の 0x0000000100016078
セグメンテーション違反の直前に正常に終了する関数は、2 つのコンテナーの内容を更新します。1 つはboost::unordered_multimap
呼び出されcarriage
た ; 1 つ以上のstruct Infection
オブジェクトが含まれています。もう 1 つのコンテナは、std::multiset< Event, std::less< Event > > EventPQ
と呼ばれるタイプce
です。
最後のcout <<
行は、セグ フォールトの直前に表示されます。
ce
これまでの私の考えでは、この関数の直後にリバランスが試みられていますが、リバランスが失敗する理由はわかりません。
アップデート
を削除すると、セグフォルトがなくなることを確認しました (ただし、プログラムは他の理由ですぐにクラッシュします) ce.erase( epqItr );
。コード内の別の場所でイベントを正常に削除できました。アイテムを消去するためにそこで使用するコードは、ここにあるものce
と同じです。
最適化なしのバックトレース(ありがとう、bdk) は、より多くの情報を明らかにします:
プログラムは信号 EXC_BAD_ACCESS を受信しました。メモリにアクセスできませんでした。
Reason: KERN_INVALID_ADDRESS at address: 0x000000000000000c
0x00007fff8062b144 in std::_Rb_tree_rebalance_for_erase ()
(gdb) backtrace
#0 0x00007fff8062b144 in std::_Rb_tree_rebalance_for_erase ()
#1 0x00000001000053d2 in std::_Rb_tree, std::less, > std::allocator >: :erase (this=0x7fff5fbfdfe8, __position={_M_node = 0x10107cb50}) at > stl_tree.h:1263
#2 0x0000000100005417 in std::multiset, std::allocator >::erase (this=0x7fff5fbfdfe8, __position={_M_node10 = 0x7fff5fbfdfe8, __position={_M_node10 = 0x7ff51 }) stl_multiset.h:346 で #3 Simulation::runEpidSim で 0x000000010000ba71 (this=0x7fff5fbfcb40) Simulation.cpp:426 で
#4 main () で main.cpp:43 で 0x000000010001fb31
Xcode が行番号を間違って読み取っていない限り、ハード ドライブの stl_tree.h だけが行 1263 で空白になっています。
数人が、recover を呼び出す関数を確認するよう求めました。少し複雑です:
最後のcout
プリント。この特定のバージョンの回復機能がなくても、コードは以前は機能していました。
Noah Roberts は、問題が Simulation.cpp の 426 行目にあることを正しく指摘しました。恥ずかしい解決策については、以下にジャンプしてください。