問題タブ [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.

0 投票する
7 に答える
15506 参照

c++ - std :: tr1::unordered_mapがわかりません

文字列を介して特定のオブジェクトにインデックスを付ける連想コンテナが必要ですが、挿入の順序も保持されるため、名前で特定のオブジェクトを検索するか、オブジェクトを繰り返し処理して、挿入したのと同じ順序でオブジェクトを取得できます彼ら。

リンクリストとハッシュマップのこのハイブリッドはうまくいくはずだと思いますstd::tr1::unordered_mapが、それがそのように機能していると思って使用しようとする前に、私は説明しましたが、そうではありませんでした。それで、誰かが私にその意味と振る舞いを説明できunordered_mapますか?


@wesc:std :: mapはSTLによって実装されていると確信していますが、std :: hash_mapはSTLに含まれていないと確信しています(古いバージョンのVisual Studioではstdextという名前空間に配置されていると思います)。

@cristopher:ですから、私が正しく理解すれば、違いは実装(したがってパフォーマンス)にあり、外部での動作にはありません。

0 投票する
7 に答える
6999 参照

c++ - std::tr1::function<> オブジェクトの比較

イベントを処理する関数を格納するために使用される tr1 関数テンプレートを使用して、C++ で C# のようなイベント システムを実装しようとしています。

複数のリスナーをこのイベントにアタッチできるように、ベクトルを作成しました。

リストからハンドラーを削除して、リスナーがイベントを受信するのを停止できるようにしたいと考えています。

では、特定のリスナーに対応するこのリスト内のエントリを見つけるにはどうすればよいでしょうか? リスト内の「関数」オブジェクトが特定の関数を参照しているかどうかをテストできますか?

ありがとう!

編集:boost::signal アプローチを調べたところ、一部の人が提案したように、おそらくトークン システムを使用して実装されているようです。これに関する情報は次のとおりです。オブザーバーは、イベントにアタッチするときに「接続」オブジェクトを保持します。この接続オブジェクトは、必要に応じて切断するために使用されます。というわけでBoostを使ってもtr1で自転しても基本原理は同じみたいです。つまり、少し不器用になります:)

0 投票する
3 に答える
1719 参照

c++ - GCC 3.4.4 上の C++ tr1 (Nokia N810 タブレット コンピューター用)

GCC 3.4.4 (Nokia N810タブレット コンピューター用) で動作する C++ tr1メンバー (特に shared_ptr ですが、関数とバインド、およびその他すべてが必要です) を取得するには何が必要ですか。

誰かがこれをしましたか?これを試みましたか?

このデバイス用にクロスコンパイルするために GCC 4.x にアップグレードすることは現実的ではないかもしれません(しかし、それを行った場合は、ぜひお知らせください)。

多くのアプローチがあるかもしれませんが、他の人がぶつかった行き止まりは避けたいと思います。

ブーストはかなり相互に依存する可能性があるため (1 つのブースト ヘッダーを持ち込むと、さらに 20 個のヘッダーが追加される)、コード サイズを抑えることが重要です。

ありがとうございました!

0 投票する
2 に答える
8002 参照

c++ - tr1::reference_wrapper はどのように役立ちますか?

最近、Scott Meyers の『 Effective C++ 』という素晴らしい本を読んでいます。最後のヒントの 1 つで、彼は TR1 の機能のいくつかを取り上げました。私はそれらの多くを Boost で知っていました。

ただし、私がまったく認識していないものがありました: tr1::reference_wrapper.

tr1::reference_wrapper をいつ、どのように使用しますか?

0 投票する
3 に答える
1881 参照

c++ - tr1::result_of の適切な使用例は何ですか?

Boost 内で tr1::result_of がよく使われていると聞きます... tr1::result_of の自宅で使用できる良い (単純な) ユースケースがあれば知りたいです。

0 投票する
5 に答える
4532 参照

c++ - std::auto_ptr を慣用的に使用するか、shared_ptr のみを使用しますか?

これshared_ptrが tr1 にありますstd::auto_ptr。両方とも異なるユース ケースがありますが、 のすべてのユース ケースはauto_ptrでも解決できますshared_ptrauto_ptr特定の時点で 1 つのクラスのみが所有権を持っていることを明示的に表現したい場合に、それを放棄するか、それとも使用し続けますか?

auto_ptrの見解では、コードの設計のニュアンスと指示を正確に追加することで、コードを明確にすることができますが、一方で、新しいプログラマーをトレーニングするときにさらに別の微妙な問題が追加されます。彼らはスマートポインターを理解する必要があり、それらがどのように機能するかの詳細。どこでもスマート ポインターを 1 つだけ使用する場合は、「すべてのポインターを にラップする」というルールを設定するだけで済みますshared_ptr

これについてどう思いますか?

0 投票する
3 に答える
5488 参照

c++ - Visual Studio 2008 SP1 で std::tr1::mem_fun を使用するにはどうすればよいですか?

VS2008 SP1のドキュメントでは、std::tr1::mem_fun.

では、なぜ、 を使用しようとするとstd::tr1::mem_fun、このコンパイル エラーが発生するのでしょうか?:

同時に、std::tr1::function問題なく使用できます。

コンパイルしようとしているサンプルコードは次のとおりです。これは、のインスタンスを呼び出すことになっていTakesIntますTestfunction<void (int)>

mem_fun私のコードを使用std::mem_funしてもコンパイルされないため、私は の tr1 バージョンを使用しようとしています! 問題が私のコードにあるのか、それとも tr1 のmem_fun. これは C++ コンパイラ エラーです (または、私だけかもしれません!)。


更新:そうですね。答えは mem_fn! と正しく綴ることです。

ただし、それを修正しても、コードはまだコンパイルされません。

コンパイラエラーは次のとおりです。

0 投票する
2 に答える
1803 参照

c++ - tr1::mem_fn とデフォルト引数を持つメンバー

デフォルトの引数を取るメンバー関数を持つクラスがあります。

std::tr1::mem_fn を使用して呼び出すことができます。

そうは言っても、オブジェクトの呼び出し可能なメンバーをデフォルトの引数で呼び出したい場合、正しい構文は何ですか?

g++ で次のエラーが発生します。

それでも、 Class::member が異なる引数を取るメンバーによってオーバーロードされている場合、同じ問題があります...

0 投票する
3 に答える
3214 参照

c++ - tr1::mem_fn と tr1::bind: const-correctness とオーバーロードについて

次のスニペットの何が問題になっていますか?

g++-4.3 でコンパイルしようとすると、cv -qualifier オーバーロードされた関数が両方tr1::mem_fn<>を混同tr1::bind<>し、次のエラーが発生するようです。

代わりに、次のスニペットはコンパイルされますが、const-correctnessが壊れているようです:

どんな手掛かり?

0 投票する
6 に答える
2939 参照

c++ - std::pair を分解するための標準 C++ 関数オブジェクトはありますか?

std::pair の要素にアクセスするための事実上の標準 (つまり、TR1 または Boost) C++ 関数オブジェクトがあるかどうかは誰にもわかりませんか? keys過去 24 時間に 2 回、 Perl ハッシュの関数のようなものがあればいいのにと思いました。たとえば、std::map オブジェクトに対して std::transform を実行し、すべてのキー (または値) を別のコンテナーにダンプするとよいでしょう。もちろん、そのような関数オブジェクトを作成することもできますが、多くの注目を集めたものを再利用したいと考えています。