問題タブ [stl]
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++ - オブジェクト全体、またはオブジェクトへのポインターをコンテナーに格納する必要がありますか?
新しいシステムをゼロから設計します。STL を使用して、特定の長寿命オブジェクトのリストとマップを保存します。
質問: オブジェクトが確実にコピー コンストラクターを持ち、オブジェクトのコピーを STL コンテナー内に格納する必要がありますか?それとも、ライフとスコープを自分で管理し、それらのオブジェクトへのポインターを STL コンテナーに格納するだけの方が一般的には良いですか?
これは詳細がやや不足していることを認識していますが、これらのソリューションの両方が可能であることを知っているので、「理論的な」より良い答えが存在する場合はそれを探しています。
ポインタで遊ぶことの 2 つの非常に明白な欠点: 1) STL を超えた範囲で、これらのオブジェクトの割り当て/割り当て解除を自分で管理する必要があります。2) スタック上に一時オブジェクトを作成してコンテナーに追加することができません。
私が見逃しているものは他にありますか?
c++ - 共有ライブラリにリンクできません
g++ 3.3.4 で共有ライブラリを構築しています。取得しているため、ライブラリにリンクできません
どの c++fil が次のように説明するか
これは hash_map を使用したことが原因かもしれないと思っていましたが、それをすべて取り除き、通常の std::map に切り替えました。を含むリンクを行うためにg ++を使用しています-lstdc++
。
このテンプレートをインスタンス化するクラスを知っている人はいますか? またはさらに良いことに、どのライブラリにリンクする必要がありますか?
EDIT:さらに見直したところ、コンパイル時に -frepo フラグを追加したことが原因であることが判明しましたが、残念ながらそのフラグは gcc3.3 バグを回避しています。
c++ - Windbg での C++ STL コンテナーのデバッグ
Windbg ファンは非常に強力であると主張しており、私も同意する傾向があります。しかし、STL コンテナのデバッグに関しては、いつも行き詰まっています。変数がスタックにある場合、!stl
拡張機能がそれを把握することがありますが、複雑な型 ( などstd::vector<TemplateField, std::allocator<TemplateField> >
) のコンテナーがヒープまたは他の構造の一部にある場合、その内容を表示する方法がわかりません。
ヒントや指針をいただければ幸いです。
c++ - この INI 解析コードの改善にご協力ください
これは、この質問のために私が思いついた簡単なものです。私はこれに完全に満足しているわけではなく、STL とストリーム ベースのプログラミングの使用を改善するチャンスだと考えました。
これをどのように改善しますか?代替ライブラリを推奨しないでください - INI ファイルからいくつかの設定文字列を解析するための簡単な方法が欲しいだけです。
c++ - std::random_shuffleのRNGとしてboost::randomを使用する
boost::randomのmt19937乱数ジェネレーターを使用するプログラムがあります。random_shuffleを実行する必要があり、これに対して生成される乱数をこの共有状態から取得して、メルセンヌツイスターの以前に生成された数に対して決定論的であるようにする必要があります。
私はこのようなことを試みました:
しかし、randでrandom_shuffleを呼び出すとテンプレートエラーが発生します。ただし、これは機能します。
おそらくそれは実際の関数呼び出しだからです。しかし、明らかにこれは元のメルセンヌツイスターからの状態を維持しません。何が得られますか?グローバル変数なしで私がやろうとしていることをする方法はありますか?
c++ - STLでのUTF8からワイド文字への変換
プラットフォームに依存しない方法で、std::string の UTF8 文字列を std::wstring に、またはその逆に変換することは可能ですか? Windows アプリケーションでは、MultiByteToWideChar と WideCharToMultiByte を使用します。ただし、コードは複数の OS 用にコンパイルされており、標準の C++ ライブラリに限定されています。
c++ - ディスクでバックアップされた STL コンテナー クラスですか?
私は STL を使用してアルゴリズムを開発することを楽しんでいますが、データ セットがヒープに対して大きすぎるという問題が繰り返し発生します。
私は、STL コンテナーと、ディスクに支えられたアルゴリズム、つまりヒープではなくディスクに格納されたデータ構造のドロップイン代替品を探していました。
最近、友人が私にstxxlを指摘しました。私がそれに関与する前に... 私が検討すべき他のディスクでバックアップされた STL の代替品はありますか?
注: 永続性や組み込みデータベースには興味がありません。boost::serialization、POST++、Relational Template Library、Berkeley DB、sqlite などについては言及しないでください。私はこれらのプロジェクトを認識しており、目的に適した場合に使用しています。
更新: 何人かの人々がメモリ マッピング ファイルとカスタム アロケータの使用について言及していますが、良い提案です。つまり、カスタム アロケーター アプローチは機能しない可能性があります。
c++ - std :: map上のループの最後の反復を検出するにはどうすればよいですか?
次のようなことを行うために、マップ上のループの最後の反復にいるかどうかを判断するための最良の方法を見つけようとしています。
これを行うにはいくつかの方法があるようです:ランダムアクセスイテレータ、distance
関数など。正規の方法は何ですか?
編集:マップのランダムアクセスイテレータはありません!
c++ - C ++でカリー化を行うにはどうすればよいですか?
カリー化とは?
C ++でカリー化を行うにはどうすればよいですか?
STL コンテナのバインダーについて説明してください。
c++ - const マップから読み取る慣用的な C++
の場合std::map<std::string, std::string> variables
、私はこれをしたいと思います:
唯一の問題は、このコンテキストでvariables
はconst
、動作しoperator[]
ないことです:(
現在、これにはいくつかの回避策があります。をキャストしたり、それをラップする関数const
を使用しvariables.count("a") ? variables.find("a")->second : std::string()
たり、作成したりします。これらのどれも私にはoperator[]
. 私は何をすべきか?これを(美しく)行う標準的な方法はありますか?
編集:誰も与えたくない答えを述べるだけです:いいえ、C ++でこれを行う便利で美しい標準的な方法はありません。サポート機能を実装する必要があります。