問題タブ [std-pair]
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::list の std::pair を std::map に変換する方法
を持っていますがstd::list< std::pair<std::string,double> >
、これは に従ってソートされていることがわかっていstd::string element
ます。
要素にstd::find_if
基づいて多くのことをしたいので、 withとがより適切であると考えています。std::string
std::map<string,double,MyOwnBinaryPredicate>
lower_bound
upper_bound
事実は、効率的な方法でinsert
要素を追加したいということです。std::map
したがって、追加のイテレータを使用して高速化したいと考えていinsert
ます。
最も簡単な方法は、 を使用しconst_reverse_iterator
て を通過し、 のをstd::list
使用することだと思います。begin()
std::map
このようにしますか、それとも悪い考えですか?
ありがとう!
iphone - C++STLコンテナ「ペア」に相当「Objective-Cでは?
私はObjective-Cを初めて使用するので、あまり判断しないでください。私は疑問に思っていました:Objective-Cで使用できるC ++ STLペアコンテナに相当するものはありますか?
NSBoolに関連付けられたNSIntegerを含む配列を作成したいと思います。各エントリが単一のKey-Valueを持つNSDictionaryである配列を使用できることは知っていますが、それは少しやり過ぎだと思います。
何か案は?
ありがとう。
c++ - std::pair に対して 2 つのセルを持つ構造体?
親愛なるみんな、
ペアと構造体について少し質問があります。2 つのセルを持つ構造体の代わりに std::pair を使用する利点はありますか? 私はしばらくペアを使用してきましたが、主な問題は読みやすさです。たとえば、二重 (int "label"、double "value") を表現したい場合は、次のいずれかを使用できます。
または
ステートメントに「セマンティック」な意味がある場合、コードはより読みやすくなります (x.label が何であるかは常にわかりますが、x.first の場合はそうではありません)。
ただし、ペアを使用する利点はあると思います。それはよりパフォーマンスが高いですか、それとも何か他のものですか?
c++ - ハックなしで `std::pair` のフィールドを「構成」することは可能ですか?
C++ では、次のコードをコンパイルします。
エラーが発生します:
テンプレートパラメーターリストの型をcv修飾すると、原則として「互換性のない」結果が得られるため、なぜそれが起こるのかを多かれ少なかれ理解しています。この場合、そうでなくても、コンパイラはそれを知る方法がありません。
とにかく、この変換を実行する非ハックな方法はありますか? reinterpret_cast
以前はタイプパニングの問題を抱えていたので、何にでも使用することに警戒しています。また、これはパフォーマンスが重要なコードであるため、一時的に使用することはできません。
編集:
これが私がやっていることです。と互換性のあるカスタム コンテナ インターフェイスを実装していますstd::unordered_map
。そのため、 であるvalue_type
必要がありますpair <const key_type, mapped_type>
。いくつかの最適化のために、値を、なしで内部的に保存する必要があります。ただし、そうすると、値への参照を返す必要があり、これらの非定数ペアへの参照しかないため、コンテナーにイテレーターを ( なしで) 実装することはできません。pair <key_type, mapped_type>
const
reinterpret_cast
c++ - このメモリは適切に解放されますか?
ペア ポインターがあるので、std::pair< A*, B* >* ポインターペアと仮定します。メモリを割り当て、ペアを使用した後、delete pointerpair を呼び出します。
また、delete A と delete B を呼び出して、メモリを完全に解放しますか?
delete Aとdelete Bのみを呼び出し、delete pointerpairを呼び出さない場合、メモリリークですか?
c++ - C ++ペアのベクトルに文字列のコピーを保存する
として定義されているクラスにプライベート属性がありますvector<pair<char *, int> > data;
。でこのベクトルにデータを追加しますdata.push_back(make_pair(p, r));
。後でベクトルからデータを取得しようとすると、p 値の悪いデータが得られます。返されるデータは次のようになり��U3
ます。これは、char配列へのポインタが格納されているためだと思います。実際のコピーをベクターに保存するにはどうすればよいですか。それが役立つ場合、char 配列は 255 文字 + 1 を超えて null で終了することはありません。
c++ - std::stack が戻り値を破壊する
問題を説明するために、コードを次のように縮小しました。
gcc -O1 フラグを使用すると、test() 関数からの戻り値が壊れます。出力例を次に示します。
このコードは、「-O1」を除くすべての gcc 最適化フラグで機能します。my_stack の宣言を削除しても機能します。これをコンパイラのバグとして分類しますか、それとも std::stack と std::pair 値を返すことについて何か不足していますか?
c++ - std::pair または std::tuple で移動セマンティクスを使用する
移動セマンティクスを利用したいが、可動クラスの 1 つが の一部である必要があるとしますstd::pair
。std::pair
目的は、右辺値として扱うことができ、一緒に転送できるを返す関数を作成することです。
std::pair
しかし、移動セマンティクスを認識させるために、それ自体に内部的な変更が加えられない限り、これがどのように行われるのかわかりません。
次のコードを検討してください。
問題はstd::make_pair
、コンストラクタ自体と同様に、std::pair
2 つのオブジェクトを取り、それらの内部コピーを作成しようとすることです。これにより、コピー コンストラクターの呼び出しが試行されます。しかし、私の例では、新しいペアをに移動res
し、コピーが作成されないようにしたいと考えています。std::pair
内部で次のコンストラクターが定義されていない限り、これは不可能だと思います。
しかし、少なくとも私が使用しているコンパイラ(gcc 4.3.2)ではそうではありません。私のコンパイラが単に古くなっている可能性があり、実際には新しいバージョンにはこのムーブ対応コンストラクタがあります。しかし、現時点では移動のセマンティクスに関する私の理解はやや不安定なので、ここで何かを見落としているだけなのかどうかはわかりません。それで、実際に再実装せずに、私が達成しようとしていることは可能std::pair
ですか? または、コンパイラが古くなっていますか?
c++ - ペアを持つ std::make_heap
make_heap()
ベクター内のペアで行うことは可能ですか?
私は使用しています:
オブジェクト関数を使用してペアを最初のメンバーで並べ替えますが、クラッシュします。
コードは次のとおりです。
【ここから撮影】
c++ - マップに挿入するための好ましい/慣用的な方法は何ですか?
に要素を挿入する 4 つの異なる方法を特定しましたstd::map
。
それらのどれが好ましい/慣用的な方法ですか? (そして、私が考えていない別の方法はありますか?)