問題タブ [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++ - 行をintに分割する
読み取ったファイルがあり、それぞれに整数の数が異なる一連の行が含まれています。これをintのベクトルのベクトルに分割するのに問題があります。
これは私の現在のコードです。
問題は、すべてのintが1行として読み取られていることです。
私は何が間違っているのですか?
c++ - std名前空間なし
この段階ではかなり古い、妥当なサイズのC ++アプリケーションがあるので、いくつかの癖があります。
これらの癖の1つは、標準化前の標準ライブラリを使用するC++コンパイラをどのように処理するかです。標準に準拠したコンパイラとこの1つの非準拠のコンパイラの違いを解決するためのヘッダーファイルが1つあります。さまざまな理由から、このコンパイラのサポートを停止することはできません。
これは次のように使用します
このアプローチには2つの主な問題があります。
- std.hを含む各コンパイルユニットは、多くの不要なコードをコンパイルする必要があります(そして、コンパイル時間を可能な限り短縮しようとしています)。
- グローバル名前空間は、通常はstd名前空間にあるほとんどすべてのもので汚染されます。
コードクリーンアッププロジェクトの一環として、これらの両方の点に対処したいと思います。最初のものは本当にこれを行うためのより重要な理由です。
この古いコンパイラをサポートする必要があるため、コードは常に、標準ライブラリで公開されているものと名前が衝突しないようにする必要があります。したがって、ポイント2は実際には関係ありませんが、次の場合に機能するソリューションが必要です。最終的にサポートをやめることができれば。
これまでの私の考えは、スーパーヘッダーを小さなヘッダーのセットに分割することです。たとえば、stl_vector、stl_iostream、stl_setなど。この方法では、関心のある標準ライブラリの部分のみを含めることができます。これらのファイル名は、stdヘッダーのパターンに従いますが、プレフィックスを簡単に検索できます。したがって、問題のあるコンパイラをダンプするときが来たら、プレフィックスを検索して削除するのは簡単です。
これで問題1は簡単に修正できると思います。
私の本当の問題は問題2を修正することです。私はこのような何かをすることを考えました
次に、次のようにコーディングできます。
そして、それはほとんどうまくいきました。標準の名前空間がなかった場合、#definestdはstd::stringを::stringに分解し、生活は良好でした。
次に、恐ろしい「usingnamespacestd;」を使用した.ccファイルでこれを試しました。そして、それが「名前空間の使用」になるため、コンパイルエラーが発生します。これは明らかに機能しません。
これで、「名前空間std;を使用して」と書くことを禁止できましたが、ヘッダーでは避ける必要がありますが、多くのSTLクラスを多用している.ccファイルで役立つ場合があります。
それで、最後に、質問に。この問題に対処するための標準的なイディオムはありますか?または、これに対処する標準的な方法がない場合、先行標準の標準ライブラリを使用するコンパイラをサポートするためにどのようなトリックを使用しますか。
プリコンパイル済みヘッダーを使用してコンパイル速度の問題を解決することを考えましたが、さまざまなコンパイラを対象としており、すべてのコンパイラでこれを機能させるための努力は、時間をかける価値がないことを意味する場合があります。
不適合コンパイラを削除するようにアドバイスする回答は人気があるかもしれませんが、これは現在私たちができないことであるため、受け入れられません。
c++ - Boost ファイルシステムのコンパイル エラー
boost ファイルシステム ライブラリを利用するコードを書いています。これが私のコードの抜粋です:
種類:
コンパイル エラーが発生します。
このコードは、lame.exe を使用してファイルを mp3 に変換するバッチ スクリプトを出力するプログラムの一部です。これが設計されている音楽ライブラリの形式は次のとおりです。
ルート/アーティスト/曲
また
ルート/アーティスト/アルバム/曲
this->m_input_path はルートへのパスです。
問題に適切に取り組んでいるかどうかはわかりません。もしそうなら、私が得ているエラーをどのように修正しますか?
編集:
私のコードは次のとおりです。
私が今得るエラーは次のとおりです。
c++ - C++ コードはヘッダーが欠落した状態で実行されます。なぜですか?
#include<cstdlib>
関数に必要な by を含める必要がabs()
あることに気付きましたabs()
。
#include<cstdlib>
重要なヘッダー ( )を忘れたのに、このコードがまだ機能するのはなぜですか?
python - os.environはどこで初期化されますか?
このコードを使用すると、多くのキーが出力されますが、出力は期待できませんでした。
これはos.pyからのコードです:
os.environはどこから値を取得しますか?どこで初期化されますか?
c++ - C++ std::queue::pop() はデストラクタを呼び出します。ポインタ型は?
std::queue
スレッドセーフなキューを作成するために、テンプレート化されたクラスとしてラップされた があります。このクラスには 2 つのバージョンがあります。1 つは値型を格納するバージョン、もう 1 つはポインター型を格納するバージョンです。
ポインター型の場合、破棄時にキューの要素を削除するのに問題があります。その理由は、アイテムをキューから安全に削除する方法がわからないためです。
この参照は、キューから要素を削除する唯一の方法はpop()
. 参照にはpop()
、アイテムのデストラクタを呼び出すとも書かれています。
これは、実際に集計を指している場合と指していない場合があるため、ポインター型で問題を引き起こします。それらのいずれかが集約を指している場合、それらはすべてそうしますが、ラッパーがテンプレート化されているため、どのタイプ (集約または非集約) を扱っているかは保証されません。
では、pop()
デストラクタを呼び出すとどうなるでしょうか。すべてが削除され、メモリの割り当てが適切に解除されていることを確認するにはどうすればよいですか?
最後に、私の解決策は、ARM9 用の古いバージョンの GCC を使用しています。私はこれを制御できません。ここで役立つスマート ポインターとコンテナーを備えたライブラリがあることは理解していますが、私には立ち入り禁止です。
c++ - 一致する文字列を持つ構造体の構造体の C++ std ベクトルを検索する
私はこれを必要以上に難しくしていると確信しています。
ベクトルを持っている...
...次のようにパターン化された構造体で構成されています。
「std::find」で mJointsVector を検索して、文字列名で個々のジョイントを見つけようとしています。これまでのところ運はありませんが、少なくとも概念的には次の例が役に立ちました。
誰かが私を正しい方向に向けることができますか?
c++ - 名前空間の使用法
私は名前空間を正しい(または少なくとも最良の)方法で使い始めようとしています。
私が最初にやろうとしたことusing namespace xxx;
は、ファイルの先頭に置かないようにすることでした。using xxx::yyy
代わりに、私は可能な限りローカルにしたいと思います。
これを説明する小さなプログラムは次のとおりです。
using std::cout;
行またはを省略した場合、またはusing std::endl
を使用しようとするとコンパイラが文句を言います。cout
endl
しかし、なぜこれは、、およびに必要ないのsrand
ですrand
かtime
?std
私がそれらの前に具体的に注ぐことを試みた場合std::
、私のコードは正常に機能しているので、私はそれらが入っているとかなり確信しています。
c++ - std :: map inizialitazion(1回のみ)
std::mapを使用してデータを変換する関数があります
私の構造体は非常に軽いですが、イメージは重い場合があります。問題は、この関数を呼び出すたびに多くのHistoParameterオブジェクトが作成されることです。おそらく、switchケースの方が効率的です。最初の質問:私はゴミを作成していますか?
2番目の解決策:
大丈夫ですか?より良い解決策?
c++ - std :: mapでスレッドセーフな操作は何ですか?
私が持っているとしましょう:
次の関数スレッドは安全ですか?
つまり、多くのスレッド間で共有されるこの巨大な読み取り専用マップが必要です。しかし、それを検索してもスレッドセーフかどうかはわかりません。
すべてが最初に一度書き込まれます。
その後、複数のスレッドがそこから読み取ります。
私はこれをできるだけ速くするためにロックを避けようとしています。(私が知っているヤヤの可能性のある時期尚早の最適化)