2

が欲しいですpair<A,B>*make_pair(a,b)(ペアはポインターではないことに注意してpair<A,B>ください)。ペアポインターを作成する標準的な方法はありますか? 2 つの単語の前後に new を追加しようとしましたが、存在しないようです。

4

1 に答える 1

2

ありません。あなたはあなた自身を転がすことができます:

template<typename X, typename Y>
std::pair<typename std::decay<X>::type, typename std::decay<Y>::type>*
heap_pair(X&& x, Y&& y) {
  typedef typename std::decay<X>::type decayed_X;
  typedef typename std::decay<Y>::type decayed_Y;
  return new std::pair<decayed_X, decayed_Y>(
    std::forward<X>(x),
    std::forward<Y>(y)
  );
}

ただし、アロケーターのカスタマイズを追加したい場合があります。

于 2012-01-30T23:58:00.730 に答える