問題タブ [tr1]
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++ - TR1 extern テンプレートをサポートする GNU GCC のバージョンは?
extern テンプレートをサポートする最も古いGNU GCC (g++) バージョンは何ですか? たとえば、バージョン 4.0 では既にサポートされていますか?TR1
c++ - スマート ポインターが保持する必要がある「ポインター」を返す
スマート ポインターをもっと活用したいプロジェクトがあります。全体として、私はこの目標に成功しています。ただし、「ベスト プラクティス」とは何かよくわからないことが 1 つあります。
基本的に、関数から「ポインター」を返したいのですが、ユーザーはそれをスマートポインターに保持する必要があります。それだけでなく、特定のスマート ポインター (共有とスコープ) を強制したくありません。
scoped_ptr
問題は主に、aを aにアップグレードする適切な方法がないように思われることですshared_ptr
(それが理想的な解決策だと思います)。所有権の譲渡が可能になり、そのような問題が発生する可能性があるため、彼らがこれを行わなかった理由を理解していstd::auto_ptr
ます。
ただし、この場合、所有権の譲渡は良い考えのようです。だから私の考えは次のようなものです:
と の両方が a から所有権を取得するコンストラクターを持っているscoped_ptr
ため、これは「問題なく」機能します。shared_ptr
std::auto_ptr
だから私の質問は、これは良い習慣ですか?より良い解決策はありますか?私が思いついた唯一の実際の代替手段は、次のようにテンプレート テンプレートを戻り値として使用することです。
これは実際にはうまく機能する可能性がありますが、それを機能させるにはいくつかの作業が必要だと思いますscoped_ptr
.
考え?
c++ - カスタム型の std::tr1::hash を拡張するには?
STL 実装がカスタム型を取得できるようにするにはどうすればよいですか? MSVC には class がありstd::tr1::hash
、これを使用して部分的に特化できます
しかし、これは推奨される方法ですか?さらに、これは GCC の実装でも機能しますか? についてboost::hash
は、無料の関数を提供するだけで十分size_t hash_value (const MyType&)
ですが、TR1 の実装に似たようなものはありますか?
c++ - long long のペアのハッシュ関数?
のペアを にマップする必要がありますがlong long
、double
使用するハッシュ関数がわかりません。各ペアは、任意の 2 つの数字で構成されますが、実際には、通常はその前後の数字になります0
(100
ただし、これは保証されません)。
これがtr1::unordered_map
ドキュメントです。私はこのように始めました:
一般に、どのハッシュ関数を使用すればよいかわかりません。優れた汎用ハッシュ関数とは?
c++ - 同じポインターから 2 つの shared_ptr オブジェクトを作成する
「The C++ Standard Library Extensions」の問題があります。
練習問題 6
セクション 2.4.2 で、同じポインターから 2 つの shared_ptr オブジェクトを作成してはならないと言いました。危険なのは、shared_ptr オブジェクトまたはその子孫の両方が最終的にリソースを削除しようとすることであり、通常はこれが問題を引き起こします。実際、気をつけていれば、これを行うことができます。特に便利ではありませんが、同じポインターから 2 つの shared_ptr オブジェクトを作成し、リソースを 1 回だけ削除するプログラムを作成してください。
以下は私の答えです:
しかし、それは良い解決策だとは思いません-コンストラクターを使用して解決したくないからです。誰かが私にもっと良いものをくれますか? thx、私の悪い英語を許してください。