17

firstとの代わりに意味のあるフィールド名を使用できるように、独自の構造体を定義する方が常に良いというのが私の印象ですsecond

標準で使用される場所の 1 つは、 のstd::pair要素にアクセスするためですstd::mapfirstがキーでありsecond、値です。key_value_pair特定のテンプレートを用意して、そのフィールドをkeyandvalueではなくfirstandとして参照する方がはるかによいのではないでしょうsecondか? 私には、無料でコードがかなり読みやすくなるように思えます。

4

1 に答える 1

11

通常、2 つ以上のオブジェクトのローカル パッケージが必要な場合は、ペア (およびタプル) を使用します。

主な使用例は、関数の戻り値の型です。C++ では複数の値を返すことはできませんが、複数のフィールドを持つ構造体を返すことはできます。出力パラメーターを使用するよりも、ペアまたはタプルを使用する方が好きです。

2 番目の使用例は、要素のアドホック ストレージです。たとえば、自動的に生成operator<する

struct A { int a; int b; int c; };

このように書くことができますoperator<

bool operator<(A const& left, A const& right) {
    return std::tie(left.a , left.b , left.c )
         < std::tie(right.a, right.b, right.c);
}

それは自動的に正しい辞書式順序を生成します (非常に多くの人がそれらの演算子を台無しにしています...)。

于 2013-10-29T10:47:51.430 に答える