继承自STL容器

时间:2016-01-08 15:57:32

标签: c++ stl

阅读StackOverflow Q& A&#00},例如thisthis,似乎从STL容器继承通常是一个坏主意。我不打算在生产代码中这样做;但是,我想知道它是否会给我一个有效的快速和肮脏的测试。

在我们的代码中,我们大量使用STL,我们希望测试如何将内存与64字节边界对齐会影响代码的性能。我打算通过编写一个简单的自定义分配器来测试这个,并且有一个简单的类继承std::vector,类中唯一的变化是默认分配器是我的自定义分配器而不是std::allocator然后只是编写脚本以使用sed并将std::vector的所有实例替换为我的新类。使用这种方法,我将永远不会有任何指向基类的指针({em> std::vector的所有实例已被替换,因此任何指针都将是我的自定义类型),似乎是从STL继承的最大问题。这是一种有效的方法吗?还有其他更容易/更安全的替代方案吗?这是一个300万行代码库,因此手动更改std::vector的所有实例以使用自定义分配器至少可以说是非常非常耗时的任务。

1 个答案:

答案 0 :(得分:15)

如果你有C ++ 11支持,而不是继承,你可以使用模板化的using语句:

template <class T>
using custom_vector = std::vector<T, custom_allocator<T>>;

然后使用您的脚本将std::vector sed至custom_vector