我希望 MyVector 可以选择 std::vector 或 boost::container::vector。如何实施?我可以使用宏,但有人告诉我它们不是很安全。谢谢。
#define MyVector std::vector
// #define MyVector boost::container::vector
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;