1

MyVector が std::vector または boost::container::vector を選択できるようにしたい。それを実装する方法は?マクロを使用できますが、あまり安全ではないと言われました。ありがとう。

#define MyVector std::vector
// #define MyVector boost::container::vector
4

1 に答える 1

11

C++11 にはエイリアス テンプレートがあります。できるよ:

template <typename T>
using MyVector = std::vector<T>;
//using MyVector = boost::container::vector<T>;

そして、次のように使用します。

MyVector<int> x;

C++03 では、マクロまたはメタ関数を使用します。

template <typename T>
struct MyVector {
    typedef std::vector<T> type;
    //typedef boost::container::vector<T> type;
};
// usage is a bit tricky
MyVector<int>::type x;
// ... or when used in a template
typename MyVector<T>::type x;
于 2013-01-03T17:35:30.333 に答える